來源:互聯網
上載者:User
關鍵字
UNIX系統管理
shell程式設計
迴圈語句
7.for語句
對清單的每一條目都進行一次迴圈過程
,每完成一次迴圈過程就將var賦予清單中下一個條目,直到完成最後一個條目的迴圈為止
語法: 例子:
for var in list $ cat test_for
do for X in 1 2 3 4 5
list A do
done echo "2 * $X is \c"
let X=X*2
echo $X
done
$ test_for
2 * 1 is 2
2 * 2 is 4
2 * 3 is 6
2 * 4 is 8
2 * 5 is 10
在上例中,關鍵字為for,in,do和done,var代表一個shell變數的名字,這個變數的賦值會貫穿for迴圈的執行過程中,list是一串由空格或者tab分割開的字串,在每一次迴圈執行都要將一個串賦值給var。
for迴圈的執行過程如下:
1.shell變數var被設置等於list中的第一個字元。
2.list A中的命令會被執行。
3.shell變數var被設置等於list中下一個字元。
4.list A中的命令被執行。
5.迴圈會持續執行,直到每一個list中的條目都執行過迴圈為止。
8.for迴圈的例子
例A:
$ cat example_A
for NAME in $(grep home /etc/passwd | cut -f1 -d:)
do
mail $NAME < mtg.minutes
echo mailed mtg.minutes to $NAME
done
例B
$ cat example_B
for FILE in *
do
if
test -d $FILE
then
ls -F $FILE
fi
done
for結構是一種非常靈活的迴圈結構,它能夠讓迴圈貫穿任何能產生的清單。 使用命令替代可以很容易產生生成清單,就像第一個例子使用管道和篩檢程式可以產生一個清單。 如果你要求多次存取相同的清單,你也許想要將它存儲到個檔中。 你可以使用cat命令來為你的for迴圈產生清單,正如下例所示:
$ cat students
user1
user2
user3
user4
$ cat for_student_file_copy
for NAME in $(cat students)
do
cp test.file /home/$NAME
chown $NAME /home/$NAME/test.file
chmod g-w,o-w /home/$NAME/test.file
echo done $NAME
done
$
存取命令列參數
你可以從命令列參數來產生list:
for i in $* 或者 for i
do do
cp $i $HOME/backups cp $i $HOME/backups
done done