1. 程式人生 > 其它 >Shell指令碼中邏輯與,邏輯或,邏輯非

Shell指令碼中邏輯與,邏輯或,邏輯非

Shell指令碼中邏輯與,邏輯或,邏輯非

前言

shell語言可以使用和其他程式語言一樣的邏輯與(&&)、邏輯或(||)、邏輯非(!);

如果您式高手的話,並且屬性shell語言中的邏輯判斷的話,那麼可以結合-a(邏輯與),-o(邏輯或),!(邏輯非)來進行邏輯判斷;

1 [ ] 表示式表示邏輯表示式

程式碼樣例

#!/bin/bash
name=bulingfeng
if [ -n "$name" -a  $name == "bulingfeng" ]
	then
		echo "name's content is bulingfeng"
	else
		echo "name's content is not  bulingfeng"
fi

注意事項

  • if的後面一定要有空格,否則則會報 syntax error in expression(語法結構表示式異常);
  • [ ] 中的前後一定要有空格來進行隔開;

檢驗shell語法是否寫的正確(空格是否加對)小技巧

使用vim檢視,如果if等關鍵字的顏色都正常顯示,則說明沒有問題,否則則需要檢查空格,以及其他符號是否編寫正確;

2 (( )) 和邏輯&&,||, ! 配合使用

shell樣例

#!/bin/bash
age=28
if (( $age > 20 ))&&(( $age == 28 ))
	then
		echo "該年齡符合要求"
	else
		ehco "該年齡不符合要求"
fi

邏輯者和邏輯的用法參考上面即可;

3 [[ ]] 和邏輯&&,||, ! 配合使用

程式碼樣例

#!/bin/bash
age=28
if [[ $age > 20 ]]&&[[ $age == 28 ]]
	then
		echo "該年齡符合要求"
	else
		ehco "該年齡不符合要求"
fi

邏輯者和邏輯的用法參考上面即可;

4 總結

  1. (( )) 和 [[ ]] 的用法式一致的,他們都可以使用&&,||,!來進行邏輯判斷;
  2. (( )) 和 [[ ]] 內部可以使用>,<...等符號進行判斷;
  3. [ ] 通常內部使用-a,-gt,-n...這些符合進行判斷;並且[ ]的功能要更強大一點;

如果不熟悉shell指令碼中的判斷規則的,那麼建議使用(( )) 和 [[ ]];

如果想結合[ ] 來使用shell內部的判斷條件,可以參考以下文章,來了解檔案內部的判斷:

shell判斷總結