2022-05-09 Shell 布爾運(yùn)算符吆寨、字符串運(yùn)算符、

布爾運(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咧欣。 [ a =b ] 返回 false浅缸。
!= 檢測(cè)兩個(gè)字符串是否不相等,不相等返回 true魄咕。 [ a !=b ] 返回 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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市昌粤,隨后出現(xiàn)的幾起案子既绕,更是在濱河造成了極大的恐慌,老刑警劉巖涮坐,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凄贩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡袱讹,警方通過(guò)查閱死者的電腦和手機(jī)疲扎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)捷雕,“玉大人椒丧,你說(shuō)我怎么就攤上這事【认铮” “怎么了壶熏?”我有些...
    開(kāi)封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)浦译。 經(jīng)常有香客問(wèn)我棒假,道長(zhǎng),這世上最難降的妖魔是什么精盅? 我笑而不...
    開(kāi)封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任帽哑,我火速辦了婚禮,結(jié)果婚禮上叹俏,老公的妹妹穿的比我還像新娘妻枕。我一直安慰自己,他們只是感情好她肯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布佳头。 她就那樣靜靜地躺著鹰贵,像睡著了一般晴氨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碉输,一...
    開(kāi)封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天籽前,我揣著相機(jī)與錄音,去河邊找鬼。 笑死枝哄,一個(gè)胖子當(dāng)著我的面吹牛肄梨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播挠锥,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼众羡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蓖租?” 一聲冷哼從身側(cè)響起粱侣,我...
    開(kāi)封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蓖宦,沒(méi)想到半個(gè)月后齐婴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡稠茂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年柠偶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睬关。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡诱担,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出电爹,到底是詐尸還是另有隱情该肴,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布藐不,位于F島的核電站匀哄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏雏蛮。R本人自食惡果不足惜涎嚼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挑秉。 院中可真熱鬧法梯,春花似錦、人聲如沸犀概。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)姻灶。三九已至铛绰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間产喉,已是汗流浹背捂掰。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工敢会, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人这嚣。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓鸥昏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親姐帚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吏垮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354