《Linux命令列與shell指令碼編程大全》 第十二章 學習筆記

來源:互聯網
上載者:User

第十二章:更多的結構化命令

for
基本格式

for var in listdo    commandsdone

可以通過下面幾種方式指定list列表
1.羅列

for var in A B C D

如果羅列中的字串中有特殊字元,比如單引號,可以
1)使用逸出字元
2)使用雙引號

2.從變數讀取列表

list="A B C D"list=$list" E"for var in $list

3.從命令中讀取值

for var in `cat $file`

注意:這種情況換行也是欄位分隔符號

for迴圈結束之後,$var儲存著列表中的最後一個值

更改欄位分隔符號
環境變數IFS:internal field separator,內部欄位分隔符號

預設情況下,空格、定位字元和分行符號為欄位分隔符號
修改:

IFS=$'\n'IFS=:IFS=$'\n:;"'

(上面的$是做什麼的)

如果只是想臨時修改
IFS.OLD=$IFS
IFS=$'\n'
IFS=$IFS.OLD

用萬用字元讀取目錄
可以用for命令遍曆目錄,但是必須在檔案名稱或者路徑名中使用萬用字元,它會強制shell使用檔案擴充匹配(file globbing)
檔案擴充匹配是產生匹配指定的萬用字元的檔案名稱或路徑的過程

for file in /home/su1216/test/* /home/su1216/abcdo    if [-d "$file"]    #檔案名稱如果有空格,那麼需要將其用引號包起來    then        echo "$file is a directory"    elif [-f "$file"]        echo "$file is a file"    else        echo "$file is not exist"    fidone

C語言風格的for命令
for ((a = 1; a < 10; a++))
注意:
1)給變數賦值可以有空格
2)條件中的變數不以貨幣符號開頭
3)迭代過程中的算式未用expr命令格式
使用多個變數

for (( a = 1, b = 10; a <= 10; a++ ,b-- ))do    echo "$a - $b"done

while命令

while test commanddo    other commandsdone

根據test命令的退出狀態代碼決定是否繼續迴圈

使用多個測試命令
只有最後一個測試命令的退出狀態代碼會被用來決定什麼時候退出迴圈

var1=10while echo $var1      [ $var1 -ge 0 ]do    echo "This is inside the loop"    var1=$[ $var1 - 1 ]done

注意:每個測試條件都在單獨的行上,每次迭代,所有測試條件都會被執行!

until命令
與while工作方式相反
基本格式

until test commandsdo    other commandsdone

也可以有多條測試命令,同while

嵌套迴圈

var1=3until [ $var1 -eq 0 ]do    echo "Outer loop: $var1"    var2=1    while [ $var2 -lt 5 ]    do        var3='echo "scale=4; $var1 / $var2 | bc"'    echo "    Inner loop:$var1 / $var2 = $var3"    var2=$[ $var2 + 1 ]    done    var1=$[ $var1 - 1 ]done

控制迴圈
break
continue
他們都可以指定跳出/繼續的迴圈層數
break n
continue n
n預設都為1

處理迴圈的輸出
可以在迴圈的done之後接管輸出,比如

for var in A B Cdo    echo "$var"done > out.txt

當然也可以使用管道

for var in A B Cdo    echo "$var"done | sort

 

 

 

轉貼請保留以下連結

本人blog地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.