shell的流程控制不可為空,如果else分支沒有語句執行,就不要寫這個else。
if 語句語法格式:
if condition
then
command1
command2
...commandn
fi
寫成一行(適用於終端命令提示符):
if [ $(ps -ef | grep -c "ssh") -gt
1 ]; then
echo
"true"; fi
末尾的fi就是if倒過來拼寫。
if-else:
if condition
then
command1
command2
...commandn
else
command
fi
if-elif-else:
if condition1
then
command1
elif condition2
then
command2
else
commandn
fi
下面的例子判斷兩個變數是否相等:
a=10
b=20
if [ $a == $b ]
then
echo
"a 等於 b"
elif [ $a
-gt$b ]
then
echo
"a 大於 b"
elif [ $a
-lt$b ]
then
echo
"a 小於 b"
else
echo
"沒有符合的條件"
fi
if else語句經常與test命令結合使用,如下所示:
num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
echo
'兩個數字相等!'
else
echo
'兩個數字不相等!'
fi
for迴圈一般格式為:
for var in item1 item2 ... itemn
do command1
command2
...commandn
done
寫成一行:
for var in item1 item2 ... itemn; do command1; command2… done;
當變數值在列表裡,for迴圈每次獲取列表中的乙個元素。
in列表是可選的,如果不用它,for迴圈使用命令列的位置引數。
例如,順序輸出當前列表中的數字:
for loop in12
345do
echo
"the value is: $loop"
done
輸出結果:
the value
is: 1
the value
is: 2
the value
is: 3
the value
is: 4
the value
is: 5
while迴圈用於不斷執行一系列命令,也用於從輸入檔案中讀取資料;命令通常為測試條件。其格式為:
while condition
docommand
done
以下是乙個基本的while迴圈,測試條件是:如果int小於等於5,那麼條件返回真。int從0開始,每次迴圈處理時,int加1。執行上述指令碼,返回數字1到5,然後終止。
int=1
while(( $int
<=5 ))
doecho
$int
let"int++"
done
執行指令碼,輸出:
123
45
這裡使用了 bash中的let 命令,它用於執行乙個或多個表示式,變數計算中不需要加上 $ 來表示變數。
while迴圈可用於讀取鍵盤資訊。下面的例子中,輸入資訊被設定為變數film,按ctrl-d
結束迴圈。
echo
'按下 退出'
echo -n '輸入你最喜歡的電影名: '
while
read film
doecho
"是的!$film 是一部好電影"
done
while :
docommand
done
或者
while
true
docommand
done
或者
for (( ; ; ))
until迴圈執行一系列命令直至條件為真時停止。until迴圈與while迴圈在處理方式上剛好相反。
一般while迴圈優於until迴圈,但在某些時候—也只是極少數情況下,until迴圈更加有用。
until 語法格式:
until condition
docommand
done
注意:
條件可為任意測試條件,測試發生在迴圈末尾,因此迴圈至少執行一次。
case語句為多選擇語句。可以用case語句匹配乙個值與乙個模式,如果匹配成功,執行相匹配的命令。case語句格式如下:
case 值 in
模式1)
command1
command2
...commandn
;;模式2)
command1
command2
...commandn
;;esac
下面的指令碼提示輸入1到4,與每一種模式進行匹配:
echo
'輸入 1 到 4 之間的數字:'
echo
'你輸入的數字為:'
read anum
case
$anum
in1) echo
'你選擇了 1'
;;2) echo
'你選擇了 2'
;;3) echo
'你選擇了 3'
;;4) echo
'你選擇了 4'
;;*) echo
'你沒有輸入 1 到 4 之間的數字'
;;esac
執行結果:
輸入 1 到 4 之間的數字:
你輸入的數字為:
3你選擇了 3
在迴圈過程中,有時候需要在未達到迴圈結束條件時強制跳出迴圈,shell使用兩個命令來實現該功能:break和continue。
break命令允許跳出所有迴圈(終止執行後面的所有迴圈)。
下面的例子中,指令碼進入死迴圈直至使用者輸入數字大於5。要跳出這個迴圈,返回到shell提示符下,需要使用break命令。
while :
doecho -n "輸入 1 到 5 之間的數字:"
read anum
case
$anum
in1|2|3|4|5) echo
"你輸入的數字為 $anum!"
;;*) echo
"你輸入的數字不是 1 到 5 之間的! 遊戲結束"
break
;;esac
done
continue命令與break命令類似,只有一點差別,它不會跳出所有迴圈,僅僅跳出當前迴圈。
對上面的例子進行修改:
while :
doecho -n "輸入 1 到 5 之間的數字: "
read anum
case
$anum
in1|2|3|4|5) echo
"你輸入的數字為 $anum!"
;;*) echo
"你輸入的數字不是 1 到 5 之間的!"
continue
echo
"遊戲結束"
;;esac
done
執行**發現,當輸入大於5的數字時,該例中的迴圈不會結束,語句 echo 「game is over!」 永遠不會被執行。 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 流程控制 if else if語法格式 if condition then command1 command2 fi 末尾的fi就是if倒過來拼寫 if else語法 if condition then command1 command2 else command1 fi if else...
Shell 流程控制
格式1 語法 if 條件 then commond fi eg bin bash a 5if a gt3 then echo 大於3 fi格式2 語法 if 條件1 then commond1 else commond2 fi eg bin bash a 5if a gt3 then echo 大於...