Shell Script控制語句

2021-07-10 23:53:32 字數 3649 閱讀 7912

在shellscript中,條件的測試判斷可以通過test[命令實現。如判斷檔案是否存在的語句可寫為if test -f test.shif [ -f test.sh ]。使用[命令時符號與條件之間需要留出空格。下面列出字串比較、算術比較、檔案條件測試的一些用法。

字串比較

結果string1 = string2

兩個字串相同時為真

string1 != string2

兩個字串不相同時為真

-n string

字串不為空時為真

-z string

字串為null(空串)時為真

算術比較

結果expression1 -eq expression2

兩個表示式相等時為真

expression1 -ne expression2

兩個表示式不相等時為真

expression1 -gt expression2

expression1大於expression2時為真

expression1 -ge expression2

expression1大於等於expression2時為真

expression1 -lt expression2

expression1小於expression2時為真

expression1 -le expression2

expression1小於等於expression2時為真

! expression

表示式為假時結果為真

檔案條件測試

結果-d file

檔案是乙個目錄時為真

-e file

檔案存在為真,通常使用-f

-f file

檔案存在為真

-g file

檔案的set-group-id為被設定則為真

-r file

檔案可讀為真

-s file

檔案大小不為0為真

-u file

檔案的set-user-id為被設定則為真

-w file

檔案可讀為真

-x file

檔案可執行為真

在使用中可以需要滿足多個條件,比如在if語句中如果需要同時滿足三個條件就需要巢狀著寫三個if,這樣做會大大減低**的美觀性並增加巢狀的深度。所以在這樣的條件下可以使用&&連線多個條件,如statements1 && statements2 && statements3。在程式執行的過程中,將會以從左往右的順序執行,當其中某條語句為假時將不再判斷後續的語句,整句的結果也為假。只有在所以語句都為真的情況下,整句的結果才為真。

或的用法與與相似,它的用法為statements1 || statements2 || statements3。不同的於與需要當前條件為真才繼續判斷後續條件,或在使用中當某乙個語句為真便不再繼續判斷後續的語句,整句的結果也為真。反之,只有所有的語句都為假時才為假。在使用中,與和或可以同時使用,如statements1 || statements2 && statements3,它表示statements1或statements2為真且statesments3為真的情況下為真。需要注意的是使用命令的情況下,&&與||需要放在之外。

控制語句包括條件語句、迴圈語句、轉向語句等,shellscript中的控制語句與其它語言大致相同,如caseuntil語句對應於c語言中的switchdo...while語句。

在shellscript中,if語句的語法如下所示。

if condition1

then

statements1

elif condition2

statements2

else

statements3

fi

condition即為執行的條件,其表示式可為上一節中的某種條件語句,當表示式為真時將執行對應的語句。statements指滿足條件的情況下將執行的語句,它不限制語句的數量,可以為一條或多條,也可以沒有(在這種情況下需要使用:命令)。在shellscript中,elif對應著c語言中的else if語句,其作用為當condition1不滿足時將繼續判斷condition2,若其為真將執行statements2。else語句的作用為當上述條件都不滿足時將執行該區域內的語句。最後,fi語句代表了該語句塊結束。在使用中乙個if語句塊中,與之對應(即不計入巢狀的語句)的elif語句可以不使用或多次使用,else語句只能使用一次或不使用,而if與fi有僅可以出現一次。

在shellscript中,case語句對應著c語言中的switch語句,語法稍有不同但沒有太大的影響。

case variable in

pattern1 [ | pattern3 ... ] ) statements1 ;;

pattern2 [ | pattern4 ... ] ) statements2 ;;

esac

case語句將會進行模式匹配然後執行相關的語句。當variable的值為pattern1時,便會執行statements1語句塊;當variable的值為pattern2時,便會執行statements2語句塊。中的內容為可選條件,即可以多種情況執行同樣的語句。在c語言的switch語句中有default,而case語句中沒有default關鍵字。若要default功能可以使用萬用字元*,即*),它的含義為任意字元窗。每個語句塊都要以;;結尾。

for語句可以迴圈處理一組值values,這組值可以是任意字串的合集。for語句在使用上更類似於foreach迴圈。for迴圈的用法如下。

for variable in values

do statements

done

下面使用乙個例子以便更好的理解for語句。

#!/bin/sh

for foo in bar fud 43

doecho

$foo

done

exit

0

程式的執行結果為:

bar

fud43

while迴圈的用法與c語言中的while迴圈類似,當條件滿足時便執行迴圈中的語句,直到條件不滿足為止。

while condition

do statements

done

until迴圈相當於c語言中的do…while迴圈。與while迴圈不同,until迴圈會向執行迴圈內的語句,再判斷條件是否成立。當條件滿足,迴圈將會繼續進行,否則將會跳出迴圈。

until condition

do statements

done

break與continue語句是在迴圈語句中使用的,其作用為當執行break時將不再執行迴圈中後續的**且跳出迴圈,當執行continue時將不再執行此次迴圈中後續的**進入下一次迴圈。與其他語言不同的是,在continue後可以帶有乙個數字,代表跳出的巢狀迴圈層數,但是使用這個將會提高程式的理解難度。

shell script 條件語句 迴圈語句

條件語句 1 bin bash 23 read p input your name name 4 第一種判斷 5if name mike then 注意這裡用 比較兩個字串時,變數 name加引號,並且 兩邊有空格 後面有空格 前面有空格 6echo eq 7else 8echo not eq 9 ...

shell Script 條件判斷語句

條件判斷語句 if 條件判斷 then 命令 fiif 條件判斷 then 條件成立執行,命令 fi整數比較 eq equal 相等 ne no不等於 gt 大於 ge 大於或等於 lt 小於 le 小於或等於兩個比大小案例 if 1 gt 2 then echo 1 2 fiif 1 le 2 t...

控制語句 for

1.迴圈結構 在程式當中,將把需要反覆執行的 片段放到 迴圈體 再聯合計數器,共同控制這段需要反覆執行的 基本上所有的程式語言支援迴圈包括三種 1 for 2 while 3 do while 2 for 語法結構 for 初始表示式 布林表示式 更新表示式 3 for執行原理 1 初始化表示式 布...