Bash編程3——條件語句(一)

Bash編程003——條件語句1

Shell提供了一系列的條件測試來處理程序執(zhí)行過程中的各種情況缎患,并做進(jìn)一步的操作葬馋。

條件測試

Shell提供了一組測試運(yùn)算符杉女,通過這些運(yùn)算符壹哺,Shell程序能夠判斷條件是否成立垢啼。條件測試在各種流程控制語句窜锯,如判斷語句和循環(huán)語句中發(fā)揮著重要的作用。

在shell中提供了兩個(gè)內(nèi)置命令"["和test用于計(jì)算條件表達(dá)式的值芭析,"["和test其實(shí)是同義詞锚扎,區(qū)別在于使用"["時(shí)必須最后用"]"匹配。

簡單的示例:

var=10086
# 注意這里[ ]兩側(cè)必須有空格
if [ $var -eq 10086 ]
then
    echo var is 10086
else
    echo var is not 10086
fi

var=10010
if test $var -eq 10010 
then
    echo var is 10010
else
    echo var is not 10010
fi

注意:

值得一提的是馁启,在Shell程序中驾孔,條件測試的指定條件為真時(shí),返回值為0惯疙,否則返回非零值翠勉。這個(gè)設(shè)計(jì)剛好和C語言中的判斷相反,這主要是為了和Shell程序的退出狀態(tài)一致霉颠。當(dāng)Shell程序執(zhí)行成功后对碌,返回0;發(fā)生錯(cuò)誤蒿偎,則返回非零值朽们。

我們來驗(yàn)證一下,在Shell中$?是一個(gè)特殊的系統(tǒng)變量诉位,表示上一條語句執(zhí)行的返回值骑脱。

var=1
test $var -eq 1; echo $?
test $var -eq 2; echo $?

執(zhí)行結(jié)果如下所示:

2018-12-24_195321.png

test命令的使用

文件操作符:

test -a FILE 測試文件是否存在

test -b FILE 測試文件是否是塊特殊文件

test -c FILE 測試文件是否是字符特殊文件

test -d FILE 測試文件是否是目錄

test -e FILE 測試文件是否存在

test -f FILE 測試文件是否存在并且是普通文件

test -g FILE 測試文件是否設(shè)置了組ID

test -h FILE 測試文件是否是符號(hào)鏈接

test -L FILE 測試文件是否是符號(hào)鏈接

test -k FILE 測試文件是否設(shè)置了sticky位

test -p FILE 測試文件是否是命名管道

test -r FILE 測試文件是否是對(duì)當(dāng)前用戶可讀

test -s FILE 測試文件是否存在且非空

test -S FILE 測試文件是否是socket

test -t FD 測試FD是否在終端中打開了

test -u FILE 測試文件是否設(shè)置了用戶ID

test -w FILE 測試文件是否對(duì)當(dāng)前用戶可寫

test -x FILE 測試文件是否對(duì)當(dāng)前用戶可執(zhí)行

test -O FILE 測試文件是否是實(shí)際由你擁有

test -G FILE 測試文件是否是實(shí)際上由你所在的組擁有

test -N FILE 測試文件是否在最后字詞讀取后被修改了

test FILE1 -nt FILE2 根據(jù)最后修改時(shí)間判斷FILE1是否比FILE2更新

字符串操作符:

test -z STRING 字符串是否非空

test -n STRING

test STRING1 = STRING2 字符串是否相等

test STRING1 != STRING2 字符創(chuàng)是否不等

test STRING1 < STRING2 按照字母表順序,STRING1是否小于STRING2

test STRING1 > STRING2 按照字母表順序苍糠,STRING1是否大于STRING2

整數(shù)操作符:

test number1 -eq number2 是否相等

test number1 -ne number2 是否不等

test number1 -gt number2 number1是否大于number2

test number1 -lt number2 number是否小于number2

test number1 -ge number2 number1是否大于等于number2

test number1 -le number2 number是否小于等于number2

邏輯操作符:

test ! EXPR 對(duì)表達(dá)式取反

test EXPR1 -a EXPR2 相當(dāng)于and叁丧,兩個(gè)表達(dá)式都為真則為真

test EXPR1 -a EXPR2 相當(dāng)于or,有一個(gè)表達(dá)式為真即為真

別的操作符:

test -o OPTION shell選項(xiàng)OPTION是否允許

test -v VAR 是否設(shè)置了shell變量VAR

test -R VAR 是否設(shè)置了shell變量VAR,且VAR是一個(gè)名字引用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末歹袁,一起剝皮案震驚了整個(gè)濱河市坷衍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌条舔,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乏矾,死亡現(xiàn)場離奇詭異孟抗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)钻心,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門凄硼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捷沸,你說我怎么就攤上這事摊沉。” “怎么了痒给?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵说墨,是天一觀的道長。 經(jīng)常有香客問我苍柏,道長尼斧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任试吁,我火速辦了婚禮棺棵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘熄捍。我一直安慰自己烛恤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布余耽。 她就那樣靜靜地躺著缚柏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宾添。 梳的紋絲不亂的頭發(fā)上船惨,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音缕陕,去河邊找鬼粱锐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛扛邑,可吹牛的內(nèi)容都是我干的怜浅。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼恶座!你這毒婦竟也來了搀暑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤跨琳,失蹤者是張志新(化名)和其女友劉穎自点,沒想到半個(gè)月后脉让,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桂敛,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年溅潜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了术唬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡滚澜,死狀恐怖粗仓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情设捐,我是刑警寧澤借浊,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站挡育,受9級(jí)特大地震影響巴碗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜即寒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一橡淆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧母赵,春花似錦逸爵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至周蹭,卻和暖如春趋艘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凶朗。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國打工瓷胧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棚愤。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓搓萧,卻偏偏與公主長得像杂数,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瘸洛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348