Shell程式設計之控制結構if

2021-07-28 15:04:07 字數 2238 閱讀 4145

所有的程式語言中都有控制結構,shell程式設計也不例外。其中if結構是最常用的分支控制結構。

linux shell程式設計中常用的if語句有:if.....then...fi,if....then....else....fi,if....then...elif......

if....then.....else...語句非常簡單,語法如下:

if   表示式

then   命令表

[else  命令表]

fi其中表示式是判斷條件,命令表是條件成立時執行的shell命令,fi代表整個if語句的結束,必須得有。

下面看乙個例子:

#!/bin/bash

#filename:if.sh

#author:gyb

read num

if [ $num -lt 10 ];then

echo "$num<10"

else

echo "$num>10"

fi

增加可執行許可權

root@ubuntu:~# chmod +x if.sh

執行root@ubuntu:~# ./if.sh 

22<10

root@ubuntu:~# ./if.sh 

2424>10

**中[ $num -lt 10 ] 是test命令的另一種寫法,需要注意的是『[『』之後和『]』之前必須有乙個空格。

if....then....elif.....是乙個多分支結構,如果程式需要的話elif可以無限制的寫下去(其中elif代表else if的縮寫)。

例子:

#!/bin/sh

#filename:elif.sh

#author:gyb

echo "input score:"

read score

if [ $score -ge 0 -a $score -lt 60 ];then

echo "e"

elif [ $score -ge 60 -a $score -lt 70 ];then

echo "d"

elif [ $score -ge 70 -a $score -lt 80 ];then

echo "c"

elif [ $score -ge 80 -a $score -lt 90 ];then

echo "b"

elif [ $score -ge 90 -a $score -le 100 ];then

echo "a"

else

echo "input error"

fi

**中判斷條件中 -a代表邏輯與,只有當-a前後兩個條件同時成立時,整個表示式才為真。

新增可執行許可權:

root@ubuntu:~# chmod +x elif.sh 

執行root@ubuntu:~# ./elif.sh

input score:34e

root@ubuntu:~# ./elif.sh 

input score:67d

root@ubuntu:~# ./elif.sh 

input score:78c

root@ubuntu:~# ./elif.sh 

input score:89b

root@ubuntu:~# ./elif.sh 

input score:99a

if語句是可以巢狀的,並且可以多重巢狀

例子:

#!/bin/bash

#filename:ifnest.sh

#author:gyb

read num

if [ $num -lt 100 ];then

echo "$num<100"

if [ $num -lt 50 ];then

echo "$num<50"

if [ $num -lt 30 ];then

echo "$num<30"

fifi

fi

新增可執行許可權

root@ubuntu:~# chmod +x ifnest.sh

執行root@ubuntu:~# ./ifnest.sh 

2323<100

23<50

23<30

root@ubuntu:~# ./ifnest.sh 

4545<100

45<50

end.

shell程式設計之迴圈結構

與c語言類似,shell指令碼語言同樣有迴圈語句 1.for語句 2.while語句。下面講解一下這兩個迴圈結構的表達並舉例說明。1.for語句 基本語法 for var in 單次表 do命令列 done 同樣也有一種和c語言相類似的形式 for i 0 i 10 i do命令列 done 例子 ...

shell程式設計之chown

語法 chown option owner group file chown option reference rfile file 描述 chown 改變指定檔案的使用者和 或組的擁有者。例如 liujl liujl rev 1 0 mycode test ls l 總用量 0 rw rw r 1...

shell 程式設計之echo

echo it is a test echo itis a testecho it is a test read 命令從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給 shell 變數 bin sh read name echo name it is a test 以上 儲存為 test.sh,...