SHELL指令碼的基礎知識2——使用結構化命令

來源:互聯網
上載者:User

結構化命令:允許指令碼根據變數值的條件或者其他命令的結果跳過一些命令或者迴圈執行這些命令

1、使用if_then語句

if command

then

     commands

fi

先運行if後面的命令,如果命令的退出狀態是0(成功執行命令),就將執行then後面,fi前面的所有命令。否則就跳到fi後面繼續執行。

2、if-then-else語句

if command

then

    commands

else

    commands

fi

3、嵌套if語句

if command1

then

     commands

elif command2

then

     commands

elif command3

then

     commands

fi

4、test命令(方括弧[   ]為同義字)

用於提供對條件的判斷

if test condition   也可以不用test condition,而使用 [ conditon ]         ([ , ] 的前後必須有空格)

then

    commands

fi

condition有三種:

(1)數值比較: –eq, –ne,              –ge,-gt,            -le, lt

       但是要注意:test命令無法處理儲存在變數中的浮點值。

使用bash計算機bc時,只是欺騙了shell把浮點值作為字串值儲存於一個變數中。如果只是先使用echo語句顯示結果,這種方法很好。但是在面向數值的函數(如數值測試條件)中不起作用。

底線是不能在test中使用非整數變數

(2)字串比較:=,!=,<,>,-n(檢測字串長度是否大於0),-z(檢測字串長度是否等於0)

字串相等:測試比較將所有標點符號和大寫都考慮在內

字串順序:要注意兩點:

1)’>’,’<’一定要用’\’轉義,否則shell會將它們當做重新導向符號,將字串值看做檔案名稱

2)大於和小於的順序與在sort命令中的順序不同。

在test中,同一個字母,大寫字母>小寫字母

在sort中,相反。

字串大小:評估一個變數是否包含資料時,使用-n和-z比較方便

對空變數和未初始化的變數檢測出的長度也為0

(3)檔案比較

檔案比較是shell指令碼中最強大和最常用的一類比較。
test可以測試檔案狀態和路徑。(使用的非常頻繁!)

-d file: 檢查file是否存在並且是一個目錄

-e file: 檢查file是否存在

-f file: 檢查file是否存在並且是一個檔案

-r file: 檢查file是否存在並且可讀

-s file: 檢查file是否存在並且不為空白

-w file: 檢查file是否存在並且可寫

-x file: 檢查file是否存在並且可執行

-O file: 檢查file是否存在並且被目前使用者擁有

-G file:檢查file是否存在並且預設組是否為目前使用者組

file1 –nt file2: 檢查file1是否比file2新

file1 –ot file2: 檢查file1是否比file2舊      

5、複合條件查詢

[ condition1 ] && [ condition2 ]

[ condition1 ] || [ condition2 ]

6、if-then的進階特徵

(1)使用雙圓括弧表示數學運算式

(( expression ))

expression包括除了標準數學操作符外的其他動作符如下:

++, –, !, ~, **, <<, >>, &, |, &&, ||

(2)使用雙方括弧表示進階字串處理函數

[[ expression ]]

提供了除test命令中的標誌字串比較以外的模式比對功能

在模式比對中,可以定義與字串值相匹配的Regex

7、case 命令

可以使用case命令,而不是編寫所有的elif語句來繼續檢查相同的變數值。

case命令以列表導向檢查單個變數的多個值

case variable in

pattern1 | pattern2) commands1;;

pattern3) commands2;;

*) default commands;;

esac

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.