SHELL_判斷表達(dá)式

test

image

示例:

$ touch a.txt
$ test -e a.txt;echo $?
0                             # 測試成功啄刹,命令返回值為 0

$ test -e s.txt;echo $?
1                             # 測試失敗誓军,命令返回值為 非 0

$ test -f a.txt;echo $?
0

$ test -d a.txt;echo $?
1


image

示例:

$ test -r a.txt; echo $?
0

$ test -x a.txt; echo $?
1

$ test -w a.txt; echo $?
0

$ test -u a.txt; echo $?     # 判斷 a.txt 文件是否具有 SUID 屬性
1

$ cat a.txt                        # 查看 a.txt 捷雕,此文件內(nèi)容為空

$ test -s a.txt; echo $?    # 判斷 a.txt 文件中有內(nèi)容
1                                      # 命令返回值為 1 ,說明文件中沒有內(nèi)容

$ echo "123" > a.txt

$ test -s a.txt; echo $?
0


image

示例:

$ touch b.txt

$ ls -l a.txt
-rw-r--r--  1 shark  staff  4 12 17 22:59 a.txt

$ ls -l b.txt
-rw-r--r--  1 shark  staff  0 12 17 23:05 b.txt

$ test a.txt -nt b.txt; echo $?  # 判斷 a.txt 是否比 b.txt 新
1                                            # 返回 1, 表示判斷表達(dá)式不成立

$ test b.txt -nt a.txt; echo $?
0

image
$ test a.txt -ef a-hard.txt; echo $?
0


image

示例:

$ test 10 -eq 20; echo $?
1

$ n1=10

$ n2=20

$ test $n1 -eq $n2; echo $?
1

$ test $n1 -lt $n2; echo $?
0

$ test $n1 -ne  $n2; echo $?
0

c 風(fēng)格的判斷

image

image

注意:
這里的 string 可以是實(shí)際的字符串壹甥,也可以是一個變量
這里說的字符串是否為 0 的意思是 字符串的長度是否為 0

示例

$ test   -z  ''; echo $?      # 空字符串
0

$ test  -z  ' '; echo $?      # 含有一個空格的字符串
1

$ test  !  -z ' '; echo $?   # 判斷含有一個空格的字符串救巷,其長度為非 0 的字符串, 空格也算是字符串。
0

$ test -z ${name}; echo $?   # 變量未定義句柠,shell 中認(rèn)為其長度為 0
0

$ name=shark

$ test -z ${name}; echo $?
1

$ age=''                               # 定義變量浦译,并且賦值為空字符串

$ test  -z  ${age}; echo $?    # shell 中,被賦值為空字符串的變量長度也為 0
0

注意:

再次強(qiáng)調(diào)一下, 在 shell 中溯职,以下兩種情況囤捻,變量的長度均視為 0

  • 1.變量未定義
    1. 變量定義了虎囚,但賦值為空字符串捂贿,比如 a='' , b=""
[root@kube-master script]# name=shark
[root@kube-master script]# age=shark
[root@kube-master script]# test $name == $age ;echo $?
0
[root@kube-master script]# test $name != $age ;echo $?
1
[root@kube-master script]#


image

示例

image

判斷符號 []

[ -z "${HOME}" ] ; echo $?

必須要注意中括號的兩端需要有空白字符來分隔喔泛释! 假設(shè)我空白鍵使用“□”符號來表示祝拯,那么鹰贵,在這些地方你都需要有空白鍵:

image
  • 在中括號 [] 內(nèi)的每個元素之間都需要用空格來分隔碉输;
  • 在中括號內(nèi)的變量敷钾,最好都以雙引號括號起來阻荒;

錯誤示范

# 定義變量
name="shark ops"

# 開始測試值是否相等
[ ${name} == "xiguatian" ]

會報如下錯誤信息:

bash: [: too many arguments

之前的錯誤寫法 [ ${name} == "xiguatian" ] 的侨赡,會變成這樣 [ shark ops == "xiguatian" ]

正確寫法應(yīng)該寫成這樣 [ "${name}" == "xiguatian" ] 的, 會變成這樣 [ "shark ops" == "xiguatian" ]

作者:運(yùn)維開發(fā)_西瓜甜
鏈接:http://www.reibang.com/p/ea61be326568
來源:簡書
簡書著作權(quán)歸作者所有齐婴,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處眨攘。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鲫售,一起剝皮案震驚了整個濱河市藐不,隨后出現(xiàn)的幾起案子雏蛮,更是在濱河造成了極大的恐慌,老刑警劉巖犀概,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件产喉,死亡現(xiàn)場離奇詭異曾沈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)敛腌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門生棍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涂滴,“玉大人柔纵,你說我怎么就攤上這事或详。” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵选调,是天一觀的道長各吨。 經(jīng)常有香客問我剔桨,道長瑰谜,這世上最難降的妖魔是什么饺饭? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任积瞒,我火速辦了婚禮庐船,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己诽俯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布候味。 她就那樣靜靜地躺著川抡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天眉枕,我揣著相機(jī)與錄音副硅,去河邊找鬼流纹。 笑死茸炒,一個胖子當(dāng)著我的面吹牛紊册,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播遏片,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼枯跑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了刨啸?” 一聲冷哼從身側(cè)響起换团,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤猫牡,失蹤者是張志新(化名)和其女友劉穎震庭,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體醋界,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡官研,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年浇垦,在試婚紗的時候發(fā)現(xiàn)自己被綠了此虑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡耸三,死狀恐怖爽彤,靈堂內(nèi)的尸體忽然破棺而出聂儒,到底是詐尸還是另有隱情缓屠,我是刑警寧澤弧岳,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏和媳。R本人自食惡果不足惜叹卷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一蒙揣、第九天 我趴在偏房一處隱蔽的房頂上張望罩息。 院中可真熱鬧递宅,春花似錦俐填、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吵冒。三九已至痹栖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間揪阿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工碍粥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嚼摩,地道東北人矿瘦。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像潮秘,于是被迫代替她去往敵國和親易结。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354