Shell流程控制

2021-08-13 07:37:48 字數 3707 閱讀 1115

#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 大於...