布爾運(yùn)算符
運(yùn)算符 | 說(shuō)明 | 舉例 |
---|---|---|
! | 非運(yùn)算踩寇,表達(dá)式為 true 則返回 false啄清,否則返回 true。 | [ ! false ] 返回 true。 |
-o | 或運(yùn)算辣卒,有一個(gè)表達(dá)式為 true 則返回 true掷贾。 | [ $a -lt 20 -o $b -gt 100 ] 返回 true。 |
-a | 與運(yùn)算荣茫,兩個(gè)表達(dá)式都為 true 才返回 true想帅。 | [ $a -l t 20 -a $b -gt 100 ] 返回 false。 |
實(shí)例
#!/bin/bash
a=10
b=20
if [ $a != $b ]
then
echo "$a != $b : a 不等于 b"
else
echo "$a == $b: a 等于 b"
fi
if [ $a -lt 100 -a $b -gt 15 ]
then
echo "$a 小于 100 且 $b 大于 15 : 返回 true"
else
echo "$a 小于 100 且 $b 大于 15 : 返回 false"
fi
if [ $a -lt 100 -o $b -gt 100 ]
then
echo "$a 小于 100 或 $b 大于 100 : 返回 true"
else
echo "$a 小于 100 或 $b 大于 100 : 返回 false"
fi
if [ $a -lt 5 -o $b -gt 100 ]
then
echo "$a 小于 5 或 $b 大于 100 : 返回 true"
else
echo "$a 小于 5 或 $b 大于 100 : 返回 false"
fi
輸出結(jié)果:
10 != 20 : a 不等于 b
10 小于 100 且 20 大于 15 : 返回 true
10 小于 100 或 20 大于 100 : 返回 true
10 小于 5 或 20 大于 100 : 返回 false
字符串運(yùn)算符
下表列出了常用的字符串運(yùn)算符啡莉,假定變量 a 為 "abc"港准,變量 b 為 "efg":
運(yùn)算符 | 說(shuō)明 | 舉例 |
---|---|---|
= | 檢測(cè)兩個(gè)字符串是否相等,相等返回 true咧欣。 | [ |
!= | 檢測(cè)兩個(gè)字符串是否不相等,不相等返回 true魄咕。 | [ |
-z | 檢測(cè)字符串長(zhǎng)度是否為0,為0返回 true哮兰。 | [ -z $a ] 返回 false毛萌。 |
-n | 檢測(cè)字符串長(zhǎng)度是否不為 0,不為 0 返回 true喝滞。 | [ -n "$a" ] 返回 true阁将。 |
$ | 檢測(cè)字符串是否為空,不為空返回 true右遭。 | [ $a ] 返回 true做盅。 |
實(shí)例
字符串運(yùn)算符實(shí)例如下:
#!/bin/bash
# author:菜鳥(niǎo)教程
\# url:www.runoob.com
a="abc"
b="efg"
if [ $a = $b ]
then
echo "$a = $b : a 等于 b"
else
echo "$a = $b: a 不等于 b"
fi
if [ $a != $b ]
then
echo "$a != $b : a 不等于 b"
else
echo "$a != $b: a 等于 b"
fi
if [ -z $a ]
then
echo "-z $a : 字符串長(zhǎng)度為 0"
else
echo "-z $a : 字符串長(zhǎng)度不為 0"
fi
if [ -n "$a" ]
then
echo "-n $a : 字符串長(zhǎng)度不為 0"
else
echo "-n $a : 字符串長(zhǎng)度為 0"
fi
if [ $a ]
then
echo "$a : 字符串不為空"
else
echo "$a : 字符串為空"
fi
執(zhí)行腳本,輸出結(jié)果如下所示:
abc = efg: a 不等于 b
abc != efg : a 不等于 b
-z abc : 字符串長(zhǎng)度不為 0
-n abc : 字符串長(zhǎng)度不為 0
abc : 字符串不為空
文件測(cè)試運(yùn)算符
文件測(cè)試運(yùn)算符用于檢測(cè) Unix 文件的各種屬性狸演。
屬性檢測(cè)描述如下:
操作符 | 說(shuō)明 | 舉例 |
---|---|---|
-b | file 檢測(cè)文件是否是塊設(shè)備文件言蛇,如果是僻他,則返回 true宵距。 | [ -b $file ] 返回 false。 |
-c | file 檢測(cè)文件是否是字符設(shè)備文件吨拗,如果是满哪,則返回 true。 | [ -c $file ] 返回 false劝篷。 |
-d | file 檢測(cè)文件是否是目錄哨鸭,如果是,則返回 true娇妓。 | [ -d $file ] 返回 false像鸡。 |
-f | file 檢測(cè)文件是否是普通文件(既不是目錄,也不是設(shè)備文件)哈恰,如果是只估,則返回 true志群。 | [ -f $file ] 返回 true。 |
-g | file 檢測(cè)文件是否設(shè)置了 SGID 位蛔钙,如果是锌云,則返回 true。 | [ -g $file ] 返回 false吁脱。 |
-k | file 檢測(cè)文件是否設(shè)置了粘著位(Sticky Bit)桑涎,如果是,則返回 true兼贡。 | [ -k $file ] 返回 false攻冷。 |
-p | file 檢測(cè)文件是否是有名管道,如果是紧显,則返回 true讲衫。 | [ -p $file ] 返回 false。 |
-u | file 檢測(cè)文件是否設(shè)置了 SUID 位孵班,如果是涉兽,則返回 true。 | [ -u $file ] 返回 false篙程。 |
-r | file 檢測(cè)文件是否可讀枷畏,如果是,則返回 true虱饿。 | [ -r $file ] 返回 true拥诡。 |
-w | file 檢測(cè)文件是否可寫,如果是氮发,則返回 true渴肉。 | [ -w $file ] 返回 true。 |
-x | file 檢測(cè)文件是否可執(zhí)行爽冕,如果是仇祭,則返回 true。 | [ -x $file ] 返回 true颈畸。 |
-s | file 檢測(cè)文件是否為空(文件大小是否大于0)乌奇,不為空返回 true。 | [ -s $file ] 返回 true眯娱。 |
-e | file 檢測(cè)文件(包括目錄)是否存在礁苗,如果是,則返回 true徙缴。 | [ -e $file ] 返回 true试伙。 |
其他檢查符:
- -S: 判斷某文件是否 socket。
-
-L: 檢測(cè)文件是否存在并且是一個(gè)符號(hào)鏈接。
實(shí)例
變量 file 表示文件 /var/www/runoob/test.sh疏叨,它的大小為 100 字節(jié)吱抚,具有 rwx 權(quán)限。下面的代碼考廉,將檢測(cè)該文件的各種屬性:
實(shí)例
#!/bin/bash
# author:菜鳥(niǎo)教程
# url:www.runoob.com
file="/var/www/runoob/test.sh"
if [ -r $file ]
then
echo "文件可讀"
else
echo "文件不可讀"
fi
if [ -w $file ]
then
echo "文件可寫"
else
echo "文件不可寫"
fi
if [ -x $file ]
then
echo "文件可執(zhí)行"
else
echo "文件不可執(zhí)行"
fi
if [ -f $file ]
then
echo "文件為普通文件"
else
echo "文件為特殊文件"
fi
if [ -d $file ]
then
echo "文件是個(gè)目錄"
else
echo "文件不是個(gè)目錄"
fi
if [ -s $file ]
then
echo "文件不為空"
else
echo "文件為空"
fi
if [ -e $file ]
then
echo "文件存在"
else
echo "文件不存在"
fi
執(zhí)行腳本秘豹,輸出結(jié)果如下所示:
文件可讀
文件可寫
文件可執(zhí)行
文件為普通文件
文件不是個(gè)目錄
文件不為空
文件存在
轉(zhuǎn)自菜鳥(niǎo)教程:www.runoob.com