shell---條件判斷

寫腳本時;有時要判斷字符串是否相等,數字測試。這對後面學習的shell語句,循環,條件語句做好基礎。


條件判斷格式

  1. test condition : test命令
  2. [ condition ] : []
  3. 命令執行的結果 :例如cd lottu.
    注意:使用[] 要注意在條件兩邊要加上空格。

文件狀態測試
shell---條件判斷

[db17 ~]$ test -f a
[db17 ~]$ echo $?
0
[@db17 ~]$ test -f c
[@db17 ~]$ echo $?
1
[@db17 ~]$ ls c
ls: c: No such file or directory
[@db17 ~]$ echo $?
2
[@db17 ~]$ test -d lottu
[@db17 ~]$ echo $?
0

shell---條件判斷

備註:1. 關係運算符只支持數字,不支持字符串,除非字符串的值是數字。
         2. 判斷兩個數是否相等;還可以用 "==", "!=" 。也是數字專用。

其中var=10

[db17 ~]$ [ ${var} == 5 ]
[db17 ~]$ echo $?
1
[db17 ~]$ [ ${var} -lt 5 ]
[db17 ~]$ echo $?
1
[db17 ~]$ [ ${var} -gt 5 ]
[db17 ~]$ echo $?
0
[db17 ~]$ [ ${var} -eq 5 ]
[db17 ~]$ echo $?
1

布爾運算符
shell---條件判斷

測試

b=5
[db17 ~]$ [ ! $b == 5 ]
[db17 ~]$ echo $?
1
[db17 ~]$ [ ! -f a ]     #判斷文件是否是普通文件
[db17 ~]$ echo $?
1

字符串運算符
shell---條件判斷

備註:[ $a ]這個有點意思。跟awk相同;雖然用法沒awk那麼靈活。

  1. [17 ~]$ [ $b ]```

  2. [db17 ~]$ echo $?
  3. 0
  4. [db17 ~]$ echo $b
  5. 5
  6. [db17 ~]$ unset b
  7. [db17 ~]$ echo $b
  8. [db17 ~]$ [ $b ]
  9. [db17 ~]$ echo $?
  10. 1

命令執行結果

一個命令執行的結果也可以充當條件判斷;若有幾個命令;是拿最後一個命令充當結果的判斷

 [db17 ~]$ ls
a  b  bin  lottu
[db17 ~]$ echo $?
0
[db17 ~]$ cd li0924
-bash: cd: li0924: No such file or directory
[db17 ~]$ echo $?
1
[db17 ~]$ ls;cd li0924
a  b  bin  lottu
-bash: cd: li0924: No such file or directory
[db17 ~]$ echo $?
1

[note]
這篇在後面的if...then...fi 是條件語句會經常用到。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章