1. 程式人生 > 其它 >每天學習linux命令-test命令&結構化命令

每天學習linux命令-test命令&結構化命令

在使用邏輯流程控制時會用到條件表示式,比如迴圈語句、條件語句。

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 something
    
fi 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
造就自己