【shell】條件

來源:互聯網
上載者:User

首先shell中只有字串這一種類型,沒有整形或者浮點型。

但是在定義變數時,可以採用單引號,雙引號和不加引號。不加引號,如果變數內部有空白字元,則會被截斷,所以這種情況必須加引號,單引號和雙引號的區別就是變數替換,單引號不會替換。

shell中用作條件測試的文法有兩種[]和test。一般用[]更多,如果為了避免太多的[],可以用test。

用[]時要注意,括弧前後都必須有空格,否則報錯。


在測試塊內部,所能用的我們在其他語言裡使用的比較符只有四種:== != > <,而且,shell中只有字串,所以這四種比較符也是針對字串的,也就是基於字典序的。

除了以上四種比較符外,我們還可以使用其他的比較參數,分為字串,數字和檔案三類:

字串:

if [-n str],測試非空,str非空返回true。這個很常用,比如我們判斷一個環境變數是否存在。

但是需要注意的一點是,這裡的str必須上雙引號,否則始終為true。

或者,根據《shell指令碼攻略》一書的作者的建議,凡是對字串的if,全部放在雙中括弧中[[]],即if [[-n str]],也只是可行的。


數字:

主要有以下六種:

-eq

-nq

-lt

-le

-gt

-ge


檔案:

-f 是檔案或者目錄

-d 是目錄

-e 是檔案


如果有多個條件,可以使用|| &&串連每一個[]。但是不能出現在[]內部,內部也只能只用命令-a或者-o。

if [ $a -gt 10 ] && [ $a -lt 12 ];thenecho "valid"fi

if [ $a -gt 10 -a $a -lt 12 ];thenecho "valid"fi



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.