sh指令碼的流程控制不可為空,如else後如果沒有需要執行的語句,則不要寫else
# 適用於指令碼形式
if condition
then
command1
command2
...commandn
fi# ---------------------
if condition1
then
command1
elif condition2
then
command2
else
commandn
fi# 適用於命令列
if [ 數值計算 ]; then command; fi
注:condition兩邊需用括起來
eg:
[root@k8s-master test6]# cat t0.sh
#!/bin/bash
n1=$[2+3]
n2=$[2*3]
if test $[n1] -eq $[n2]
then
echo "test $[n1] -eq $[n2]: true"
else
echo "test $[n1] -eq $[n2]: false"
fi[root@k8s-master test6]# sh t0.sh
test 5 -eq 6: false
[root@k8s-master test6]#
格式:
# 適用於指令碼形式
for var in item1 time2 ... itemn
docommand1
command2
...commandn
done
# 適用於命令列形式
for var in item1 item2 ... itemn; do command1; command2... ; done
eg:
[root@k8s-master test6]# for var in 1 2 3 4 5; do echo "the value is: $var"; done
the value is: 1
the value is: 2
the value is: 3
the value is: 4
the value is: 5
[root@k8s-master test6]#
[root@k8s-master test6]# for str in 'hello world'; do echo "$str\n"; done
hello world\n
[root@k8s-master test6]#
格式:
while condition
docommand
done
eg:
[root@k8s-master test6]# ./t1.sh 12
345[root@k8s-master test6]# cat t1.sh
#!/bin/bash
i=1while (( $i <= 5))
do echo $i
let i++
done
[root@k8s-master test6]#
[root@k8s-master test6]# ./t2.sh
ctrl+d to exit
your like actor:tom
actor: tom
jack
actor: jack
[root@k8s-master test6]# cat t2.sh
#!/bin/bash
echo 'ctrl+d to exit'
echo -n 'your like actor:'
while read actor
do echo "actor: $actor"
done
[root@k8s-master test6]#
格式:
until condition
docommand
done
eg:
[root@k8s-master test6]# ./t3.sh 01
2345
6789
[root@k8s-master test6]# cat t3.sh
#!/bin/bash
i=0until [ ! $i -lt 10 ]
do echo $i
i=$[i+1]
done
[root@k8s-master test6]#
格式:
case val in
pattern1)
command1
command2
...commandn
;;pattern2)
command1
command2
...commandn
;;esac
eg:
[root@k8s-master test6]# ./t4.sh
input a num between 1-2:
3input not 1 or 2
[root@k8s-master test6]# cat ./t4.sh
#!/bin/bash
echo 'input a num between 1-2:'
read n
case $n in
1) echo 'input 1'
;;2) echo 'input 2'
;;*)
echo 'input not 1 or 2'
;;esac
[root@k8s-master test6]#
[root@k8s-master test6]# ./t5.sh
input 1 or 2
1input: 1
2input: 2
3not 1 or 2 break
[root@k8s-master test6]# cat t5.sh
#!/bin/bash
echo 'input 1 or 2'
while true
do read n
if [ $n -ne 1 -a $n -ne 2 ]
then
echo 'not 1 or 2 break'
break
else
echo "input: $n"
fidone
[root@k8s-master test6]#
Shell 程式設計(五)Shell流程控制
if condition1 then command1 elif condition2 then command2 else commandn fi方式一 for n in12 3doecho ndone 或for n in12 3 do echo n done 或for n in do echo ...
Shell程式設計的流程控制
和其他高階程式語言一樣,shell提供了用來控制程式執行流程的命令,包括條件分支和迴圈結構,使用者可以用這些命令建立非常複雜的程式。與傳統語言不同的是,shell用於指定條件值的不是布林表示式,而是命令和字串。1 測試命令 test命令用於檢查某個條件是否成立,它可以進行數值 字元和檔案3個方面的測...
Shell程式設計的流程控制
和其他高階程式語言一樣,shell提供了用來控制程式執行流程的命令,包括條件分支和迴圈結構,使用者可以用這些命令建立非常複雜的程式。與傳統語言不同的是,shell用於指定條件值的不是布林表示式,而是命令和字串。1 測試命令 test命令用於檢查某個條件是否成立,它可以進行數值 字元和檔案3個方面的測...