Shell腳本編程——for循環
時間:2018-09-26 來源:未知
1、本文是關于shell腳本編程中,對于for循環語句的使用總結。
2、語法格式
for 變量名 in 單詞表
do
命令表
done
3、變量名:即為用戶自定義變量
單詞表:對變量賦值的表單
命令表:循環執行的shell命令
4、值得一問的是,for語句既然作為一個循環語句,那他是如何實現循環的呢?循環次數跟誰有關呢?很簡單,循環的次數跟單詞表中單詞的個數相同!
5、如圖1所示,此程序中單詞表為:1 2 3 4。單詞個數為四個,因此for語句循環執行4次。

6、知道了循環的次數與單詞表的單詞數相同,那每次循環for語句又是如何執行的呢?如圖1所示的程序中:
a) 第三行程序:變量A依次被賦值為:1、2、3、4。
b) 因此第六行打印語句需執行四次:第一次打印1、第二次打印2、...第四次打印4。
c) $A:在這里$是獲取變量A的值
總之:需要將單詞表中的單詞依次賦值給變量A,同時每賦值一次,都需執行一次do...done之間命令表的內容。
7、舉個相似的例子,如圖2所示。
a) $* :所有命令行的參數(除第一個:執行語句除外)。
b) 此程序中的單詞表:hello 、world、huaqing、yuan、jian
c) 即for語句循環執行五次。執行結果如圖所示。

8、再舉個的例子,如圖3所示。
a) 第3行 :建立一個名為dir的目錄
b) 第4行 :將ls命令的執行結果提取出來賦值給list變量
c) list :在此程序中相當于單詞表。list的單詞數是由ls命令結果決定的,即當前路徑下有多少個文件,list就有幾個單詞。
d) 第6行 :將list里的單詞依次賦值給變量A,并執行do...done里的內容
e) 第8行 :判斷是否為普通文件
f) 第10行:判斷如果是普通文件則拷貝該文件到目錄dir下(-f 判斷普通文件)
g) 第11行:打印提示信息及已拷貝的文件名

9、執行結果如圖4所示
命令一:$ ls
查看當前路徑下所有文件及文件夾。
命令二:$ ./1.sh
執行1.sh腳本文件。會在終端上打印信息,即源文件11行的執行結果。
命令三:$ ls
執行結束后再次查看,會出現dir目錄文件,即源文件3行的執行結果。
命令四:$ ls dir/
查看dir/目錄下的文件,會顯示已拷貝的普通文件,即源文件8、9、10行的執行結果。

