shell學習之二
shell 中| && || () {} 用法以及shell的邏輯與或非
1、&& 運算符:
格式
command1 && command2
&&左邊的命令(命令1)返回真(即返回0,成功被執行)後,&&右邊的命令(命令2)才能夠被執行;換句話說,“如果這個命令執行成功&&那麼執行這個命令”。 語法格式如下:
command1 && command2 && command3 ...
-
命令之間使用 && 連接,實現邏輯與的功能。
-
只有在 && 左邊的命令返回真(命令返回值 $? == 0),&& 右邊的命令纔會被執行。
-
只要有一個命令返回假(命令返回值 $? == 1),後面的命令就不會被執行。
2、|| 運算符:
格式
command1 || command2
||則與&&相反。如果||左邊的命令(command1)未執行成功,那麼就執行||右邊的命令(command2);或者換句話說,“如果這個命令執行失敗了||那麼就執行這個命令。
-
命令之間使用 || 連接,實現邏輯或的功能。
-
只有在 || 左邊的命令返回假(命令返回值 $? == 1),|| 右邊的命令纔會被執行。這和 c 語言中的邏輯或語法功能相同,即實現短路邏輯或操作。
-
只要有一個命令返回真(命令返回值 $? == 0),後面的命令就不會被執行。
3、() {}運算符:
如果希望把幾個命令合在一起執行,shell提供了兩種方法。既可以在當前shell也可以在子shell中執行一組命令。 格式:
(command1;command2;command3....) 多個命令之間用;分隔
一串的命令執行()和{} ()和{}都是對一串的命令進行執行,但有所區別: 相同點: ()和{}都是把一串的命令放在括號裏面,並且命令之間用;號隔開 不同點 ()只是對一串命令重新開一個子shell進行執行,{}對一串命令在當前shell執行 ()最後一個命令可以不用分號,{}最後一個命令要用分號; ()裏的第一個命令和左邊括號不必有空格,{}的第一個命令和左括號之間必須要有一個空格 ()和{}中括號裏面的某個命令的重定向隻影響該命令,但括號外的重定向則影響到括號裏的所有命令
4、| 運算符
管道符號,是unix一個很強大的功能,符號爲一條豎線:"|"。 用法:
command 1 | command 2
他的功能是把第一個命令command 1執行的結果作爲command2的輸入傳給command 2
如:top | grep screen
5、整數變量表達式
-eq 等於 -ne 不等於 -gt 大於 -ge 大於等於 -lt 小於 -le 小於等於
6、字符串變量表達式
If [ $a = $b ] 如果string1等於string2,則爲真 字符串允許使用賦值號做等號 if [ $string1 != $string2 ] 如果string1不等於string2,則爲真 if [ -n $string ] 如果string 非空(非0),返回0(true) if [ -z $string ] 如果string 爲空,則爲真 if [ $sting ] 如果string 非空,返回0 (和-n類似)
7、邏輯運算符
和高級語言一樣,shell語言也有邏輯運算符,與、或、非三個邏輯運算符,分別如下
-
!:非
-
-a:與
-
-o:或
邏輯非 ! 條件表達式的相反 if [ ! 表達式 ] if [ ! -d $num ] 如果不存在目錄$num
邏輯與 –a 條件表達式的並列 if [ 表達式1 –a 表達式2 ]
邏輯或 -o 條件表達式的或 if [ 表達式1 –o 表達式2 ]