標籤:for
格式
for 名稱 in 列表
do
迴圈體
done
例子:
列出/etc/passwd檔案中,第1,3,6,12行的使用者名稱,UID,Shell
#!/bin/bashfor line in 1 3 6 12do Username=$(head -$line /etc/passwd | tail -1 | awk -F: ‘{print $1}‘) Userid=$(head -$line /etc/passwd | tail -1 | awk -F: ‘{print $3}‘) Usershell=$(head -$line /etc/passwd | tail -1 | awk -F: ‘{print $7}‘) echo -e "UserName:$Username\tUserID:$Userid\tUserShell:$Usershell"done
列表產生
1.逐個給出 如 /etc/fstab /etc/inittab
2.萬用字元匹配 如 /var/*
3.命令生產列表
例:
#!/bin/bashfor File in `ls /var`do file /var/$Filedone
4.數字序列{1..100} 會自動延伸為1到100
{啟始數字..結束數字}
seq 自動產生數字序列:
sed 3: 產生從1到3
sed 3 16 生產從3到16
sed 3 2 16 產生3到16,但會間隔2
3 5 7 9 11 13 15
練習:顯示/etc/passwd 所有使用者的使用者名稱和Shell
#!/bin/bashLINES=$(wc -l /etc/passwd | awk -F" " ‘{print $1}‘)for I in $(seq 1 $LINES)do head -$I /etc/passwd | tail -1 | awk -F: ‘{print $1,$7}‘done
Shell指令碼中算數運算
Shell不支援浮點數:計算結果中,浮點會被園為整數
1.22=1;1.99=1
算數運算實現方式
$[expression]
如
a=1
b=2
c=$[$a+$b]
echo $c
3
指令碼聯絡
計算0到100的總和
#!/bin/bashsum=0for i in $(seq 0 100)do sum=$[$sum+$i]doneecho $sum
計算所有使用者的UID總和
#!/bin/bashidsum=0for i in $(awk -F: ‘{print $3}‘ /etc/passwd)do idsum=$[$idsum+$i]doneecho $idsum
本文出自 “懸劍” 部落格,請務必保留此出處http://sublime.blog.51cto.com/8856101/1440022
Shell指令碼基礎-----for迴圈