Shell中的流程控制

2021-09-27 03:30:35 字數 4208 閱讀 8027

shell裡面的流程控制不能為空,因此如果else裡面沒有語句就不要寫else,貌似也可以在else裡面寫乙個":"表示什麼都不做。源自實驗樓的高階 bash 指令碼程式設計指南課程。

if語句的語法格式為:

if condition

then

command 1

command 2

...command n

fi

if else語句的語法格式為:

if condition

then

command 1

command 2

...command n

else

command 1

command 2

...command m

fi

if elif else語句的語法格式為,else語句如果沒有就不要寫:

if condition1

then

command 1

command 2

...command n

elif condition2

then

command 1

command 2

...command m

else

command 1

command 2

...command p

fi

乙個簡單的例子

a=10

b=20

if[$a -eq $b

]then

echo

"a == b"

elif

[$a -gt $b

]then

echo

"a > b"

elif

[$a -lt $b

]then

echo

"a < b"

else

echo

"ineligible"

fi

for迴圈一般格式為:

for var in item1 item2 ... itemn

docommand 1

command 2

...command n

done

for loop in 1 2 3 4 5

doecho

"the value is: $loop"

done

輸出結果為:

the value is: 1

the value is: 2

the value is: 3

the value is: 4

for str in this is a string

doecho

$str

done

輸出結果為:

thisisa

string

while迴圈用於不斷執行一系列命令,也用於從輸入檔案中讀取資料;命令通常為測試條件。其格式為:

while condition

docommand 1

command 2

...command n

done

a=1

while[

$a -lt 6 ]

doecho

$alet

"a++"

#用於指定算數運算子,即 let expretion,let只能執行整數的相關操作,也可以寫為 let a=$a+1

done

輸出結果為:

123

45

echo

'press exit'

echo -n 'who do you think is the most handsome: '

while

read man

doecho

"yes!$man is really handsome"

done

該實驗中,輸入的字串存在man中,按回車表示輸入結束,按或者可以結束程式的等待輸入狀態。

無限迴圈的語法格式為:

while

:# ":"在shell中表示空命令,也可以視為true。

docommand 1

command 2

...command n

done

或者

while

true

docommand 1

command 2

...command n

done

或者

for((;

;))

until迴圈執行一系列命令直至條件為真時停止。until迴圈與while迴圈在處理方式上正好相反。一般while迴圈由於until迴圈, 但是在某些特殊情況下,until迴圈更加有用。until迴圈的語法格式為:

until conditon

docommand 1

command 2

...command n

done

a=1

until[

$a -gt 6 ]

doecho

$alet

"a++"

#用於指定算數運算子,即 let expretion,let只能執行整數的相關操作,也可以寫為 let a=$a+1

done

輸出結果為:

123

456

shell中case語句為多選擇語句。可以用case語句匹配乙個值與乙個模式,如果匹配成功,執行相匹配的命令。case語句的格式如下:

case var in

item 1)

command 1

command 2

...command n ;;

item 2)

command 1

command 2

...command m ;;

esac

c=

"ccc"

read man

case

$man

in"aaa"

)echo

"aaa";;

"bbb"

)echo

"bbb";;

$c)echo

"ccc";;

*)echo

"else";;

esac

在迴圈過程中,有時候需要在未達到迴圈結束條件時強制跳出迴圈,shell中有兩個命令來實現這個功能:break和continue。

break命令允許跳出所有迴圈(終止執行後面的所有迴圈)。

例如:

while:do

echo -n "enter a number between 1 and 5: "

read anum

case

$anum

in 1|2|3|4|5)

echo

"the number you entered is $anum!";;

*)echo

"the number you entered is not between 1 and 5! game over!!!"

break;;

esac

done

結果輸出為:

enter a number between 1 and 5: 5

the number you entered is 5!

enter a number between 1 and 5: 6

the number you entered is not between 1 and 5! game over!

!!

與c++中類似,continue不會跳出整個迴圈體,只是會跳出當前迴圈。

Shell流程控制

case迴圈 if condition condition then statements if true 1 elif condition condition then statements if true 2 else statements if all else fails fi注 方括號中的...

Shell 流程控制

shell的流程控制不可為空,如果else分支沒有語句執行,就不要寫這個else。if 語句語法格式 if condition then command1 command2 commandn fi寫成一行 適用於終端命令提示符 if ps ef grep c ssh gt 1 then echo t...

Shell流程控制

shell 流程控制 if else if語法格式 if condition then command1 command2 fi 末尾的fi就是if倒過來拼寫 if else語法 if condition then command1 command2 else command1 fi if else...