這篇文章為大家?guī)?lái)有關(guān)Shell腳本中條件判斷語(yǔ)句的語(yǔ)法結(jié)構(gòu)和用法詳細(xì)介紹。大部分命令和知識(shí)點(diǎn)都是大家經(jīng)常用到的,為此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供平順網(wǎng)站建設(shè)、平順做網(wǎng)站、平順網(wǎng)站設(shè)計(jì)、平順網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、平順企業(yè)網(wǎng)站模板建站服務(wù),十年平順做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
思考:何為真(true)?何為假(false)?
##1. 條件判斷語(yǔ)法格式
特別說(shuō)明:
1)[ 親親,我兩邊都有空格,不空打死你呦 ] :imp:
2)[[ 親親,我兩邊都有空格,不空打死你呦 ]]:imp:
3) 更多判斷,`man test`去查看,很多的參數(shù)都用來(lái)進(jìn)行條件判斷| 判斷參數(shù) | 含義 |
|---|---|
| -e | 判斷文件是否存在(任何類型文件) |
| -f | 判斷文件是否存在并且是一個(gè)普通文件 |
| -d | 判斷文件是否存在并且是一個(gè)目錄 |
| -L | 判斷文件是否存在并且是一個(gè)軟連接文件 |
| -b | 判斷文件是否存在并且是一個(gè)塊設(shè)備文件 |
| -S | 判斷文件是否存在并且是一個(gè)套接字文件 |
| -c | 判斷文件是否存在并且是一個(gè)字符設(shè)備文件 |
| -p | 判斷文件是否存在并且是一個(gè)命名管道文件 |
| -s | 判斷文件是否存在并且是一個(gè)非空文件(有內(nèi)容) |
舉例說(shuō)明:
test -e file 只要文件存在條件為真
[ -d /shell01/dir1 ] 判斷目錄是否存在,存在條件為真
[ ! -d /shell01/dir1 ] 判斷目錄是否存在,不存在條件為真
[[ -f /shell01/1.sh ]] 判斷文件是否存在,并且是一個(gè)普通的文件| 判斷參數(shù) | 含義 |
|---|---|
| -r | 當(dāng)前用戶對(duì)其是否可讀 |
| -w | 當(dāng)前用戶對(duì)其是否可寫 |
| -x | 當(dāng)前用戶對(duì)其是否可執(zhí)行 |
| -u | 是否有suid,高級(jí)權(quán)限冒險(xiǎn)位 |
| -g | 是否sgid,高級(jí)權(quán)限強(qiáng)制位 |
| -k | 是否有t位,高級(jí)權(quán)限粘滯位 |
說(shuō)明:這里的新舊指的是文件的修改時(shí)間。
| 判斷參數(shù) | 含義 |
|---|---|
| file1 -nt file2 | 比較file1是否比f(wàn)ile2新 |
| file1 -ot file2 | 比較file1是否比f(wàn)ile2舊 |
| file1 -ef file2 | 比較是否為同一個(gè)文件,或者用于判斷硬連接,是否指向同一個(gè)inode |
| 判斷參數(shù) | 含義 |
|---|---|
| -eq | 相等 |
| -ne | 不等 |
| -gt | 大于 |
| -lt | 小于 |
| -ge | 大于等于 |
| -le | 小于等于 |
| 判斷參數(shù) | 含義 |
|---|---|
| -z | 判斷是否為空字符串,字符串長(zhǎng)度為0則成立 |
| -n | 判斷是否為非空字符串,字符串長(zhǎng)度不為0則成立 |
| string1 = string2 | 判斷字符串是否相等 |
| string1 != string2 | 判斷字符串是否相不等 |
| 判斷符號(hào) | 含義 | 舉例 |
|---|---|---|
| -a 和 && | 邏輯與 | [ 1 -eq 1 -a 1 -ne 0 ] [ 1 -eq 1 ] && [ 1 -ne 0 ] |
| -o 和 || | 邏輯或 | [ 1 -eq 1 -o 1 -ne 1 ] |
特別說(shuō)明:
&& 前面的表達(dá)式為真,才會(huì)執(zhí)行后面的代碼
|| 前面的表達(dá)式為假,才會(huì)執(zhí)行后面的代碼
; 只用于分割命令或表達(dá)式
[root@server ~]# [ $(id -u) -eq 0 ] && echo "the user is admin"
[root@server ~]$ [ $(id -u) -ne 0 ] && echo "the user is not admin"
[root@server ~]$ [ $(id -u) -eq 0 ] && echo "the user is admin" || echo "the user is not admin"
[root@server ~]# uid=`id -u`
[root@server ~]# test $uid -eq 0 && echo this is admin
this is admin
[root@server ~]# [ $(id -u) -ne 0 ] || echo this is admin
this is admin
[root@server ~]# [ $(id -u) -eq 0 ] && echo this is admin || echo this is not admin
this is admin
[root@server ~]# su - stu1
[stu1@server ~]$ [ $(id -u) -eq 0 ] && echo this is admin || echo this is not admin
this is not admin注意:在(( ))中,=表示賦值;==表示判斷
[root@server ~]# ((1==2));echo $?
[root@server ~]# ((1<2));echo $?
[root@server ~]# ((2>=1));echo $?
[root@server ~]# ((2!=1));echo $?
[root@server ~]# ((`id -u`==0));echo $?
[root@server ~]# ((a=123));echo $a
[root@server ~]# unset a
[root@server ~]# ((a==123));echo $?注意:雙引號(hào)引起來(lái),看作一個(gè)整體;= 和 == 在 [ 字符串 ] 比較中都表示判斷
[root@server ~]# a='hello world';b=world
[root@server ~]# [ $a = $b ];echo $?
[root@server ~]# [ "$a" = "$b" ];echo $?
[root@server ~]# [ "$a" != "$b" ];echo $?
[root@server ~]# [ "$a" !== "$b" ];echo $? 錯(cuò)誤
[root@server ~]# [ "$a" == "$b" ];echo $?
[root@server ~]# test "$a" != "$b";echo $?
test 表達(dá)式
[ 表達(dá)式 ]
[[ 表達(dá)式 ]]
思考:[ ] 和 [[ ]] 有什么區(qū)別?
[root@server ~]# a=
[root@server ~]# test -z $a;echo $?
[root@server ~]# a=hello
[root@server ~]# test -z $a;echo $?
[root@server ~]# test -n $a;echo $?
[root@server ~]# test -n "$a";echo $?
# [ '' = $a ];echo $?
-bash: [: : unary operator expected
2
# [[ '' = $a ]];echo $?
0
[root@server ~]# [ 1 -eq 0 -a 1 -ne 0 ];echo $?
[root@server ~]# [ 1 -eq 0 && 1 -ne 0 ];echo $?
[root@server ~]# [[ 1 -eq 0 && 1 -ne 0 ]];echo $?1. 符號(hào);和&&和||都可以用來(lái)分割命令或者表達(dá)式
2. 分號(hào)(;)完全不考慮前面的語(yǔ)句是否正確執(zhí)行,都會(huì)執(zhí)行;號(hào)后面的內(nèi)容
3. `&&`符號(hào),需要考慮&&前面的語(yǔ)句的正確性,前面語(yǔ)句正確執(zhí)行才會(huì)執(zhí)行&&后的內(nèi)容;反之亦然
4. `||`符號(hào),需要考慮||前面的語(yǔ)句的非正確性,前面語(yǔ)句執(zhí)行錯(cuò)誤才會(huì)執(zhí)行||后內(nèi)容;反之亦然
5. 如果&&和||一起出現(xiàn),從左往右依次看,按照以上原則以上就是Shell腳本中條件判斷語(yǔ)句的語(yǔ)法結(jié)構(gòu)和用法的介紹,自己動(dòng)手嘗試下條件語(yǔ)句的使用方法吧,更多內(nèi)容歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享名稱:Shell腳本中條件判斷語(yǔ)句的語(yǔ)法結(jié)構(gòu)和用法
轉(zhuǎn)載源于:http://www.chinadenli.net/article36/gisgsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、用戶體驗(yàn)、做網(wǎng)站、網(wǎng)站維護(hù)、靜態(tài)網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)