Shell條件語句

2021-07-10 05:13:16 字數 3024 閱讀 8127

if 語句通過關係運算子判斷表示式的真假來決定執行哪個分支。shell 有三種 if ... else 語句:if ... else 語句的語法:

if [ expression ]

then

statement(s) to be executed if expression is true

fi

注意:expression 和方括號([ ])之間必須有空格,否則會有語法錯誤。

舉個例子:

#!/bin/sha=

10b=20

if[$a==$b]

then

echo "a is equal to b"

fiif[$a

!=$b

]then

echo "a is not equal to b"

fi

執行結果:

a is not equal to b
舉個例子:

#!/bin/sha=

10b=20

if[$a==$b]

then

echo "a is equal to b"

else

echo "a is not equal to b"

fi

執行結果:

a is not equal to b
舉個例子:

#!/bin/sha=

10b=20

if[$a==$b]

then

echo "a is equal to b"

elif[$a

-gt$b

]then

echo "a is greater than b"

elif[$a

-lt$b

]then

echo "a is less than b"

else

echo "none of the condition met"

fi

執行結果:

a is less than b

if ... else 語句也可以寫成一行,以命令的方式來執行,像這樣:

if

test$[2

*3]-eq

$[1+5

];then echo 'the two numbers are equal!';fi

;

if ... else 語句也經常與 test 命令結合使用,如下所示:

num1=$[

2*3]

num2=$[

1+5]

iftest

$[num1]

-eq$[num2]

then

echo 'the two numbers are equal!'

else

echo 'the two numbers are not equal!'

fi

輸出:

the two numbers are equal!
test 命令用於檢查某個條件是否成立,與方括號([ ])類似。

case 語句匹配乙個值或乙個模式,如果匹配成功,執行相匹配的命令。case語句格式如下:

case 值 in

模式1)

command1

command2

command3

;;模式2)

command1

command2

command3

;;*) command1

command2

command3

;;esac

case工作方式如上所示。取值後面必須為關鍵字 in,每一模式必須以右括號結束。取值可以為變數或常數。匹配發現取值符合某一模式後,其間所有命令開始執行直至 ;;。;; 與其他語言中的 break 類似,意思是跳到整個 case 語句的最後。

下面的指令碼提示輸入1到4,與每一種模式進行匹配:

echo 'input a number between 1 to 4'

echo 'your number is:\c'

read anum

case

$anumin1

) echo 'you select 1';;2

) echo 'you select 2';;3

) echo 'you select 3';;4

) echo 'you select 4'

;;*) echo 'you do not select a number between 1 to 4'

;;esac

輸入不同的內容,會有不同的結果,例如:

input a number between 1 to 4

your number is:3

you select 3

再舉乙個例子:

#!/bin/bash

option

="$"

case$in

-f)file

="$"

echo "file name is $file"

;;-d

)dir

="$"

echo "dir name is $dir"

;;*)

echo "`basename $`:usage: [-f file] | [-d directory]"

exit

1# command to come out of the program with status 1

;;esac

執行結果:

$./test.sh

test.sh: usage: [ -f filename ] | [ -d directory ]

$ ./test.sh -f index.htm

file name is index.htm

$ ./test.sh -d unix

dir name is unix

shell 條件語句

test命令 測試表示式是否成立,若成立返回0,否則返回其他數值 格式一 test 條件表示式 格式二 條件表示式 檔案測試 操作符 檔案或目錄 常用的測試操作符 d 測試是否為目錄 directory e 測試目錄或檔案是否存在 exist f 測試是否為檔案 file r 測試當前使用者是否有許...

shell 條件控制語句

if else命令 1 單分支if條件語句 if 條件判斷式 then 程式fi注意 1.if語句使用fi結尾,和一般語言使用大括號結尾不同。2.條件判斷式 就是使用test命令判斷,所以中括號和條件判斷式之間必須有空格 3.then後面跟符號條件之後執行的程式,可以放在之後,用 分割,也可以換行寫...

shell程式設計if條件語句

if結構語句 if 表示式 then 語句elif 表示式 then 語句else 語句fi1 比較兩個整數大小 num 100 if num 10 then echo num 10 fi2 表示式 兩邊需要有乙個空格,等同test命令 num 100 if num gt 10 then if te...