每天學習linux命令-test命令&結構化命令
阿新 • • 發佈:2021-09-28
在使用邏輯流程控制時會用到條件表示式,比如迴圈語句、條件語句。
1. if-then語句:
if pwd then echo "It worked" fi
這個例子裡一條命令pwd作為了一個條件表示式,如果這個命令執行成功,退出狀態碼是0,就是python語言true的效果,否則是false的效果。
(想要檢視命令退出的狀態碼,可以使用特殊變數$?檢視,該變數儲存了最後一次執行命令的狀態碼)
echo $?
if-else語句也可以有分支和巢狀:
if condition1 then if condition2 then do somethingfi else if confitin3 then do something fi fi
2. test命令
test命令不接引數時,返回非0退出碼
數:
-eq 等於
-gt 大於
-ge 大於等於
-lt 小於
-le 小於等於
-ne 不等於
字串:
= 等於
!= 不等於
-z 為0
-n 不為0
檔案:
-e 存在
-r 可讀
-w 可寫
-x 可執行
-s 內容不為空
-d 是目錄
-f 是檔案
-c 內容是字元
-b 內容是二進位制
邏輯:
! 非
-o 或
-a 與
其他特性:
變數是否存在:
test $doNotExist
變數存在退出碼是0,否則是1
字串的比較可以比較字串是否有相等的值:
test $num1 = $num2
test命令可用中括號的形式宣告,(以下都使用中括號的宣告方式)
~]# test $num1;echo $?; 0 ~]# test $num10;echo $?; 1 ~]# [ $num1 ];echo $?; 0
也就是 test $num1這種寫法等於 [ $num1 ],需要注意的是括號內兩端必須加空格,[$num1]這樣會發生錯誤。
布林運算:
或與
[ $num1 ] && [ $num2 ]
[ $num1 ] || [ $num2 ]
相當於對兩條test命令進行了布林運算。
高階特性:
1. 雙括號:
雙括號允許使用高階數學表示式,命令格式:
(( expression ))
可以運用以下運算:
# 自增自減 val++ val-- ++val --val # 邏輯求反 ! # 冪運算 ** # 位運算 ~ << >> & | # 邏輯 && ||
雙括號命令也可以在普通語句中執行:
(( val = 10 ** 2 ))
2. 雙方括號:
可以進行模式匹配,正則表示式。
u=chen if [[ $u == c* ]];then echo $u;fi
3. case語句
case語句對所有可能的值進行匹配:
case varible in pattern1 | pattern2) commands1;; pattern3 commands2;; *) default commands;; sac造就自己