UNIX系統管理:shell程式設計迴圈語句(2)

來源:互聯網
上載者: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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.