Shell_5_判斷表達式

http://www.reibang.com/p/ea61be326568

test

示例:

$ 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


示例:

$ 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 蕊程,此文件內容為空

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

$ echo "123" > a.txt

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


示例:

$ 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, 表示判斷表達式不成立

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

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


示例:

$ 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 風格的判斷

image.png

注意:
這里的 string 可以是實際的字符串啥辨,也可以是一個變量
這里說的字符串是否為 0 的意思是 字符串的長度是否為 0

示例

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

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

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

$ test -z ${name}; echo $?   # 變量未定義,shell 中認為其長度為 0
0

$ name=shark

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

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

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

注意:

再次強調一下, 在 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.png

判斷符號 []

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

必須要注意中括號的兩端需要有空白字符來分隔喔! 假設我空白鍵使用“□”符號來表示缔俄,那么弛秋,在這些地方你都需要有空白鍵:

  • 在中括號 [] 內的每個元素之間都需要用空格來分隔器躏;
  • 在中括號內的變量俐载,最好都以雙引號括號起來;

錯誤示范

# 定義變量
name="shark ops"

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

會報如下錯誤信息:

bash: [: too many arguments

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

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末遏佣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子揽浙,更是在濱河造成了極大的恐慌状婶,老刑警劉巖意敛,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異膛虫,居然都是意外死亡草姻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門稍刀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撩独,“玉大人,你說我怎么就攤上這事账月∽郯颍” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵局齿,是天一觀的道長剧劝。 經常有香客問我,道長抓歼,這世上最難降的妖魔是什么讥此? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮谣妻,結果婚禮上暂论,老公的妹妹穿的比我還像新娘。我一直安慰自己拌禾,他們只是感情好取胎,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著湃窍,像睡著了一般闻蛀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上您市,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天觉痛,我揣著相機與錄音,去河邊找鬼茵休。 笑死薪棒,一個胖子當著我的面吹牛,可吹牛的內容都是我干的榕莺。 我是一名探鬼主播俐芯,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼钉鸯!你這毒婦竟也來了吧史?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤唠雕,失蹤者是張志新(化名)和其女友劉穎贸营,沒想到半個月后吨述,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡钞脂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年揣云,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冰啃。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡灵再,死狀恐怖,靈堂內的尸體忽然破棺而出亿笤,到底是詐尸還是另有隱情翎迁,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布净薛,位于F島的核電站汪榔,受9級特大地震影響,放射性物質發(fā)生泄漏肃拜。R本人自食惡果不足惜痴腌,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望燃领。 院中可真熱鬧士聪,春花似錦、人聲如沸猛蔽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽曼库。三九已至区岗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間毁枯,已是汗流浹背慈缔。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留种玛,地道東北人藐鹤。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像赂韵,于是被迫代替她去往敵國和親娱节。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內容

  • 官網 中文版本 好的網站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,370評論 0 5
  • 標題: Rakudo and NQP Internals子標題: The guts tormented imple...
    焉知非魚閱讀 1,355評論 1 3
  • 一右锨、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,723評論 0 10
  • 捕獲 簽名不僅僅是語法括堤,它們是含有一列參數(shù)對象的 first-class 對象 。同樣地绍移,有一種含有參數(shù)集的數(shù)據(jù)...
    焉知非魚閱讀 550評論 0 0
  • 人生如棋 落子無聲無息 拋擲而起 清脆落地 悲歡不喜 慍怒毫無畏懼 擔起勇氣 鏗鏘有力 勞作規(guī)律 倦怠毫不客氣 背...
    柚寶媽咪閱讀 366評論 5 12