Shell布爾運算

來源:互聯網
上載者:User

標籤:linux   shell   bool   邏輯運算   

1. bash裡的true和false並不是我們通常所認為的0和1。
true和false是shell的內建命令,返回邏輯值。例如:
$ true
$ echo $?
0
$ false
$ echo $?
1
$?是一個特殊的變數,存放有上一個程式的結束狀態
在shell裡面,把0作為程式是否成功結束的標誌。
 
2. 在shell中,邏輯值表示程式的返回值,如果程式成功返回,
則為真,如果不成功返回,則為假。
 
3. test命令可以用來進行數值測試,字串測試,檔案測試。
* 數值測試:
$ if test 5 -eq 5 ; then echo "YES" ; else echo "NO"; fi
YES
$ if test 5 -ne 5 ; then echo "YES" ; else echo "NO"; fi
NO
* 字串測試
$ if test -n "not empty" ; then echo "YES" ; else echo "NO"; fi
YES
-n 測試字串的長度不為零
$ if test -z "not empty" ; then echo "YES" ; else echo "NO"; fi
NO
-z 測試字串的長度為零
$ if test -z "" ; then echo "YES" ; else echo "NO"; fi
YES
* 檔案測試
$ if test -f /boot/System.map ; then echo "YES" ; else echo "NO"; fi
YES
-f 用來測試檔案是否存在,以及是否是一個普通的檔案
$ if test -d /boot/System.map ; then echo "YES" ; else echo "NO"; fi
-d 用來測試檔案是否存在,以及是否是一個目錄
 
4. test邏輯組合測試
* 與,例如:
$ a=5; b=4; c=6;
$ if test $a -eq 5 -a $b -eq 4 -a $c -eq 6 ; then echo "YES" ; else echo "NO" ; fi
YES
* 或,例如:
$ if test $a -eq 5 -o $b -ne 4 ; then echo "YES" ; else echo "NO" ; fi
YES
* 非,例如:
$ if test ! -f /etc/profile ; then echo "YES" ; else echo "NO" ; fi
NO
 
5. test與&&,||
$ str1="test"; str2="test"
$ if test -z "$str1" -o "$str2" == "$str1" ; then echo "YES" ; else echo "NO" ; fi
YES
$ if test -z "$str1" || test "$str1"=="$str2" ; then echo "YES" ; else echo "NO" ; fi
YES
兩個測試語句是等價的。但是可以看到-o使用在test內部,而||使用在test之間
test可以使用[]來代替,需要注意的是[]的前後都需要空格
在測試字串時,建議所有的變數都用雙引號括起來,以防止變數代表的字串為空白的情況
在使用中括弧測試時,要注意:
$ i=5
$ if [ $i=6 ] ; then echo "YES" ; else echo "NO"; fi
YES
$ if [ $i = 6 ] ; then echo "YES" ; else echo "NO"; fi
NO
 
6. 命令列表
* 對於&&,如果前面的命令成功執行,則繼續執行後面的命令;如果失敗,就不執行後面的命令
* 對於||,若果前面的命令沒有成功執行,則繼續執行後面的命令
例如:
ping -c1 www.lzu.edu.cn && echo "connected"

* 命令列表有時用來取代if/then等分支結構,這樣可以省略一些代碼


參考資料

====================

Shell編程範例 -- by falcon

Shell布爾運算

相關文章

聯繫我們

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