Shell中的括號(hào)、雙括號(hào)禽捆、方括號(hào)和雙方括號(hào)

前言

首先在Shell中,括號(hào)表示條件測(cè)試方法玉罐。主要用在if-then姐直、case等需要條件判斷的語(yǔ)句結(jié)構(gòu)中。

最近在看bash圆米,括號(hào)搞的我一頭霧水卒暂,所以總結(jié)一下,理清思路娄帖!

括號(hào)

  • 括號(hào)一般在命令替換的時(shí)候使用也祠。
#!/bin/bash

today=$(date +%y%m%d)
touch log.$today

雙括號(hào)

  • 使用雙括號(hào),在比較過程中使用高級(jí)數(shù)學(xué)表達(dá)式
符號(hào) 描述
val++ 后增
val-- 后減
++val 先增
--val 先減
近速! 邏輯求反
位求反
** 冪求反
<< 左位移
>> 右位移
&& 邏輯和
邏輯或
$ cat test23.sh
#!/bin/bash

val1=10
if(( $val1 ** 2 > 90 ))
then
    ((val2 = $val1 ** 2))
    echo "The square of $val1 is $val2"
fi

# seal @ bogon in ~/Desktop/Shell [16:48:19]
$ ./test23.sh
The square of 10 is 100
  • 注意诈嘿,不需要將雙括號(hào)中表達(dá)式里的大于號(hào)轉(zhuǎn)義。這是雙括號(hào)命令提供的另一個(gè)高級(jí)特性削葱。

方括號(hào)

  • 方括號(hào)定義了測(cè)試條件奖亚。

  • 第一個(gè)方括號(hào)后和第二個(gè)方括號(hào)前都要加一個(gè)空格,否則會(huì)報(bào)錯(cuò)析砸。

  • 方括號(hào)主要包括4類判斷:

    • 數(shù)值比較
    比較 描述
    n1 -eq n2 檢查n1是否與n2相等
    n1 -ge n2 檢查n1是否大于或等于n2
    n1 -gt n2 檢查n1是否大于n2
    n1 -le n2 檢查n1是否小于或等于n2
    n1 -lt n2 檢查n1是否小于n2
    n1 -ne n2 檢查n1是否不等于n2
    #!/bin/bash
    # Using numeric test evaluations
    value1=10
    value2=11
    #
    if [ $value1 -gt 5 ]
    then
        echo "The test value $value1 is greater than 5"
    fi
    #
    if [ $value1 -eq $value2 ]
    then
        echo "The values are equal"
    else
        echo "The values are different"
    fi
    #
    
    • 字符串比較
    比較 描述
    str1 = str2 檢查str1是否和str2相同
    str1 != str2 檢查str1是否和str2不同
    str1 < str2 檢查str1是否比str2小
    str1 > str2 檢查str1是否比str2大
    -n str1 檢查str1的長(zhǎng)度是否非0
    -z str1 檢查str1的長(zhǎng)度是否為0
    $ cat test8.sh
    #!/bin/bash
    # testing string equality testuser=baduser
    #
    if [ $USER != $testuser ] then
        echo "This is not $testuser"
    else
        echo "Welcome $testuser"
    fi
    $
    $ ./test8.sh
    This is not baduser
    
    • 文件比較
    比較 描述
    -d file 檢查file是否存在并是一個(gè)目錄
    -e file 檢查file是否存在
    -f file 檢查file是否存在并是一個(gè)文件
    -r file 檢查file是否存在并可讀
    -s file 檢查file是否存在并非空
    -w file 檢查file是否存在并可寫
    -x file 檢查file是否存在并可執(zhí)行
    -O file 檢查file是否存在并屬當(dāng)前用戶所有
    -G file 檢查file是否存在并且默認(rèn)組與當(dāng)前用戶相同
    file1 -nt file2 檢查file1是否比file2新
    file1 -ot file2 檢查file1是否比file2舊
    $ cat test11.sh
    #!/bin/bash
    # Look before you leap
    # jump_directory=/home/arthur #
    if [ -d $jump_directory ] then
       echo "The $jump_directory directory exists"
       cd $jump_directory
       ls
    else
       echo "The $jump_directory directory does not exist"
    fi #
    $
    $ ./test11.sh
    The /home/arthur directory does not exist
    
    • 符合條件比較
    [ condition1 ] && [ condition2 ]
    [ condition1 ] || [ condition2 ]
    

雙方括號(hào)

  • 雙方括號(hào)提供了字符串比較的高級(jí)特性昔字。
  • 括號(hào)中可以定義一些正則表達(dá)式來匹配字符串
  • 注意不是所有的shell都支持雙方括號(hào)!
$ cat test24.sh
#!/bin/bash

if [[ $USER == s* ]]
then
    echo "Hello Seal"
else
    echo "Sorry, I do not know you"
fi

# seal @ bogon in ~/Desktop/Shell [17:36:57]
$ ./test24.sh
Hello Seal
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末首繁,一起剝皮案震驚了整個(gè)濱河市李滴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蛮瞄,老刑警劉巖所坯,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異挂捅,居然都是意外死亡芹助,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門闲先,熙熙樓的掌柜王于貴愁眉苦臉地迎上來状土,“玉大人,你說我怎么就攤上這事伺糠∶晌剑” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵训桶,是天一觀的道長(zhǎng)累驮。 經(jīng)常有香客問我酣倾,道長(zhǎng),這世上最難降的妖魔是什么谤专? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任躁锡,我火速辦了婚禮,結(jié)果婚禮上置侍,老公的妹妹穿的比我還像新娘映之。我一直安慰自己,他們只是感情好蜡坊,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布杠输。 她就那樣靜靜地躺著,像睡著了一般秕衙。 火紅的嫁衣襯著肌膚如雪蠢甲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天灾梦,我揣著相機(jī)與錄音峡钓,去河邊找鬼妓笙。 笑死若河,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寞宫。 我是一名探鬼主播萧福,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼辈赋!你這毒婦竟也來了鲫忍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤钥屈,失蹤者是張志新(化名)和其女友劉穎悟民,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篷就,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡射亏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了竭业。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片智润。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖未辆,靈堂內(nèi)的尸體忽然破棺而出窟绷,到底是詐尸還是另有隱情,我是刑警寧澤咐柜,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布兼蜈,位于F島的核電站攘残,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏饭尝。R本人自食惡果不足惜肯腕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望钥平。 院中可真熱鬧实撒,春花似錦、人聲如沸涉瘾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)立叛。三九已至负敏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秘蛇,已是汗流浹背其做。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赁还,地道東北人妖泄。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像艘策,于是被迫代替她去往敵國(guó)和親蹈胡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容