#shell
流程控制
#if else
#if語法格式
# if condition
# then
# command1
# command2
# ...
# fi
# 末尾的fi就是if倒過來拼寫
#if else語法
# if condition
# then
# command1
# command2
# ...
# else
# command1
# ...
# fi
# if else-if else語法格式:
# if condition
# then
# command1
# command2
# ...
# elif condition2
# then
# command1
# ...
# else
# command1
# ...
# fi
# 判讀兩個例項是否相等
a=1b=3
if [ $a == $b ] #判讀句與方括號要有空格
then
echo "a等於b"
elif [ $a -gt $b ]
then
echo "a大於b"
else
echo "a小於b"
fi#if else 語句經常與test命令結合使用
num1=$[1+5]
num2=$[6+2]
if test $num1 -eq $num2
then
echo "a等於b"
else
echo "a不等於b"
fi# for迴圈
echo "for迴圈"
#for 迴圈的一般格式為:
# for var in item1 item2 .. itemn
# do
# command1
# command2
# ...
# commandn
# done
# 當變數值在列表裡,for迴圈即執行一次所有命令,使用變數名獲取列表中的當前取值,命令可為任何有效的shell命令和語句。
# in列表可以包含替換、字串和檔名,in列表是可選的,如果不用它,for迴圈使用命令列的位置引數
# 順序輸出當前列表中的數字
for loop in 1 2 3 4 5
do echo "the value is : $loop"
done
# 順序輸出字串中的字元
for str in "this is a string"
doecho $
done
#while語句
echo "while語句"
# while迴圈用於不斷執行一系列命令,也用於從輸入檔案中讀取資料;命令通常為測試條件。其格式為:
# while condition
# do
# command1
# done
# 測試條件是如果int小於等於5,那麼條件返回為真
int=1
while (($int <= 5))
do echo $int
let "int++"
done
# let命令,用於執行乙個或對個表示式,變數計算中不需要加上$來表示變數
#until迴圈
echo "until 迴圈"
# until迴圈執行一系列命令直至條件為真時停止。
#until迴圈與while迴圈在處理上剛好相反。一般while迴圈優於until迴圈,但是在某些時候,until更加有用
# until語法格式:
# until condition
# do
# command
# done
# 條件可為任意測試條件,測試發生在迴圈末尾,因此迴圈至少執行一次。
num=1
until ((num>5)) do
echo $num
let "num++"
done
#case
# case語句為多選語句,可以用case語句匹配乙個值與乙個模式,如果匹配成功,執行向匹配的命令
# 格式:
# case value in
# 模式1)
# command1
# command2
# ...
# ;;
# 模式2)
# command1
# command2
# ...
# ;;
#*)# command1
# ;;
# esac
# case工作方式
# 取值後面必須為單詞in,每乙個模式必須以右括號結束。取值可以為變數或常數。匹配發現取值符合某一模式後,其間所有命令開始執行直至;;。
# 取值將檢測匹配的每乙個模式。一旦模式匹配,則執行完匹配模式響應命令後不再繼續其他模式,如果無一匹配模式,使用星號*捕獲改值,再執行後面的命令
echo "請輸入1到4之間的數字"
read anmu
case $anmu in1)
echo "你輸入的是:$anmu";;
2) echo "你輸入的是:$anmu";;
3) echo "你輸入的是:$anmu";;
4) echo "你輸入的是:$anmu";;
*) echo "你輸入的不是1到4之間的數";;
esac
#跳出迴圈
# 在迴圈過程中,有時候需要在未達到迴圈結束條件時強制跳出迴圈,shell使用兩個命令來實現該功能:break和continue。
# break命令允許跳出所有迴圈(終止執行後面的所有迴圈)
# 案例:指令碼進入死迴圈直至使用者輸入的數字大於5,就跳出迴圈
# while :
# do
# echo -n "輸入1到5之間的數"
# read num
# case $num in
# 1|2|3|4|5)
# echo "您輸入的是$num"
# ;;
# *)
# echo "您輸入的不是1到5之間的數,結束遊戲"
# break
# ;;
# esac
# done
#continue命令和break命令類似,只有一點差別,它不會跳出所有迴圈,僅僅跳出當前迴圈。
while :
do
echo -n "輸入1到5之間的數"
read num
case $num in
1|2|3|3|4|5 )
echo "您輸入的是$num";;
*) echo "您輸入的不是1到5之間的數"
continue
echo "結束遊戲";;
esac
done
# 執行**發現,當輸入大於5的數字,迴圈不會結束,"結束遊戲不會被執行"
# esac
# case的語法和c 語言差別很大,它需要乙個esac(就是case反過來)作為結束的標記,每個case分支用圓括號,用兩個分號表示break。
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 流程控制
格式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 大於...