Shell編程中的條件語句有哪些-創新互聯
Linux Shell編程中的條件語句有哪些?針對這個問題,今天小編總結這篇有關條件語句的文章,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。
條件測試
- 文件測試
- 整數測試
- 字符串與邏輯測試
IF語句
- if單分支語句
- if雙分支語句
- if多分支語句
- if嵌套
條件測試操作
test命令
- 測試特定的表達式是否成立,當條件成立時,測試語句的返回值為0,否則為其他數值
格式1: test 條件表達式
格式2: [ 條件表達式 ] //至少應有一個空格
文件測試
[ 操作符 文件或目錄 ]
常用的測試操作符
- -d:測試是否為目錄
- -e:測試目錄或文件是否存在
- -f:測試是否為文件
- -r:測試當前用戶是否有權限讀取
- -w:測試當前用戶是否有權限寫入
- -x:測試當前用戶是否有權限執行
[root@localhost ~]# [ -d /media/cdrom ]
[root@localhost ~]# echo $?
0 //返回0表示條件成立
[root@localhost ~]# [ -d /media/cdrom/Server ]
[root@localhost ~]# echo $?
1 //返回1表示條件不成立
[root@localhost ~]# [ -d /media/cdrom ] && echo "YES" //&&邏輯與,“而且”的意思
YES
整數值比較
[ 整數1 操作符 整數2]
常用的測試操作符
-eq
:等于-ne
:不等于-gt
:大于-lt
:小于-le
:小于或等于-ge
:大于或等于
[root@localhost ~]# who |wc -l
7
[root@localhost ~]# [ $(who |wc -1) -gt 5] && echo "Too many." //用戶數是否>5
Too many.
[root@localhost ~]# [ $(who |wc -1) -ge 10 ] && echo">= 10." //用戶數是否>=10
[root@localhost ~]# FreeCC=$(free -m | grep "Mem:”| awk '{print $6}`)
[root@localhost ~]# [ $FreeCC -It 1024 ] && echo ${FreeCC}MB //空閑內存是否< 1024MB
275MB
字符串比較
格式1
[ 字符串1 = 字符串2 ] [ 字符串1 != 字符串2 ]
格式2
[ -z 字符串 ]
常用的測試操作符
- =:字符串內容相同
- !=:字符串內容不同,!號表示相反的意思
- -z:字符串內容為空
[root@localhost ~]# echo $LANG //測試當前語言環境
zh_ CN.UTF-8
[root@localhost ~]# [ $LANG != "en.US" ] && echo "Not en.US"
Not en.US
[root@localhost ~]# read -p“是否覆蓋現有文件(yes/no) ?”ACK //測試讀入的字符串是否為yes
是否覆蓋現有文件(yes/no) ? yes
[root@localhost ~]# [ $ACK = "yes" ] && echo "覆蓋"
覆蓋
邏輯測試
格式1:[ 表達式1 ] 操作符號 [ 表達式2 ]...
格式2:命令1 操作符 命令2...
常用的測試操作符
- -a或&&:邏輯與,“而且”的意思
- -o或||:邏輯或,“或者”的意思
- !:邏輯否
[root@localhost ~]#[ -dletc ] && [-r /etc] && echo “You can open it“
[root@localhost~]#[ -d/etc ] II [-d /home] && echo “ok"
if語句的分支結構
單分支結構
if 條件測試操作
then 命令序列
fi
單分支if語句
- 判斷掛載點目錄,若不存在則自動創建
[root@localhost ~]# vim test01.sh #!/bin/bash dir="/mnt/aaa/" if [ !-d $dir ] //當目錄不存在時執行 then mkdir -p $dir if
雙分支結構
if 條件測試操作
then 命令序列1
else 命令序列2
fi
雙分支if語句
- 判斷目標主機是否存活,顯示檢測結果
root@localhost ~]# vim test02.sh
#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
if [ $? -eq 0 ]
then //判斷ping命令的檢測結果,分別給出不同的提示
echo "Host $1 is up."
else
echo "Host $1 is down."
fi
多分支結構
if 條件測試操作1
then 命令序列1
elif 條件測試操作2
then 命令序列2
else
命令序列3
fi
多分支if語句
- 判斷分數范圍,分出優秀、合格、不合格三檔
[root@localhost ~]# vim test03.sh #!/bin/bash read -p "請輸入您的分數(0-100):" a if [ $a -ge 85 ]&&[ $a -le 10 ] then echo"$a分,優秀!" //判斷分數所在區間,給出不同的分檔結果 elif[ $a -ge 70 ]&&[ $a -le 84 ] then echo"$a分,合格!" else echo"$a分,不合格!" fi
- 看完上述內容,你們對Shell編程中的條件語句有進一步的了解嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀。
另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網站題目:Shell編程中的條件語句有哪些-創新互聯
本文鏈接:http://www.xueling.net.cn/article/dpceoh.html