shell指令碼基礎鞏固(6)

2021-09-25 03:00:49 字數 1423 閱讀 7025

while命令,也是乙個迴圈命令,while後面後跟著乙個條件,當滿足條件(退出狀態碼為0)時,while內部會一直迴圈執行,直到直到while後面的條件不滿足(退出狀態碼不為0)時,結束這個while迴圈。在編寫時要注意死迴圈。示例如下:

執行結果如下:

另外的,while後面可以跟多個命令,而最終決定while迴圈退出的是最後乙個命令的退出狀態碼。

until命令和while命令剛好相反,即:until後面的命令返回的退出狀態碼不為零時,迴圈會一直執行,當until後面的命令的退出狀態碼為0時,則退出迴圈。until後面也可以跟多個命令,而最終決定while迴圈退出的是最後乙個命令的退出狀態碼。示例如下:

這裡使用了兩個命令,第乙個命令輸出當前var的值,第二個命令的退出狀態碼會作為迴圈退出的依據,即var小於等於0時。執行結果如下:

注意最後列印的那個0,是echo $var列印的,由於var=0時,雖然迴圈不會再執行,但是最後會迭代一次來退出迴圈,所以until後面的命令還會執行一次,而由於最後乙個命令的退出狀態碼為0,所以迴圈內部的命令不會再執行,最後退出迴圈。

另外的,之前所有的迴圈命令都可以根據自己的需要進行迴圈巢狀。同時還可以利用迴圈巢狀處理檔案資料,對某檔案中的資料逐行遍歷,然後對行再進行遍歷。在遍歷過程中可以自己定義字段分隔符。

這兩個命令和其他的程式語言用法一樣,需要在迴圈內部使用,當達到某種條件時執行break或者continue。有一點需要注意,break和continue預設都是退出距離自己最近的一層迴圈,如果要退出多層迴圈,可以使用:

break n

# or

continue n

其中n代表要跳出的迴圈層數,預設情況下,n=1。

在shell指令碼中,可以對迴圈的輸出使用管道(|)或者重定向(>),可以通過在done命令之後新增乙個命令來實現,例項展示重定向如下:

執行後,檢視output1.txt檔案內容如下:

shell指令碼基礎(6)

1 整數值比較 格式 整數1 操作符 整數2 常用測試操作符 eq 等於 ne 不等於 gt 大於 lt 小於 le 小於或等於 ge 大於或等於 who wc l 顯示當前登陸使用者人數 df th檢視系統當前掛載的分割槽 df th grep boot awk 在boot盤中輸出第六列的內容 d...

shell指令碼基礎

執行shell指令碼有兩種方法 1 作為可執行程式 將上面的 儲存為 test.sh,並 cd 到相應目錄 chmod x test.sh 使指令碼具有執行許可權 test.sh 執行指令碼 注意,一定要寫成 test.sh,而不是 test.sh,執行其它二進位制的程式也一樣,直接寫 test.s...

shell指令碼基礎

shell定義 shell是命令解析器,將使用者的輸入的指令轉化為機器可以執行的程式。和c語言不同,指令碼有自己的語法。比較常用的格式是 bin bash或者 bin sh 如 這是乙個判斷輸入字元型別的程式 bin bash read key case in a z echo upperlette...