Shell——quan——測試

Shell腳本的條件測試:
最常用的爲:[ 測試表達式 ] 兩邊必須有空格 且裏面如果要使用&& || < > 這些只用在[[ ]]
需用-a -o -gt -lt 代替
[[ 測試表達式 ]]
test 測試表達式
((測試表達式))
test -f file && echo 1 ||echo false,使用&& || 帶空格美觀一點

[ -f /data/sh ] && echo 1 || echo false 可以使用man test 來進行表達式的書寫

文件測試描述符
    **-d 文件 directory 文件 存在且爲目錄爲真
    -f 文件 file  文件存在且爲普通文件爲真
    -e 文件 exist 文件存在爲真
    -r 文件 read 文件存在且爲可讀爲真
    -s 文件 size 文件存在且文件大小不爲0爲真
    -w 文件 write 文件存在且可寫爲真
    -x 文件 executable 文件存在且可執行爲真
    -L 文件 link 文件存在且爲連接文件爲真
    f1 -nt f2  newer than 文件1比文件2 新。以文件修改時間爲準
    f1 -ot f2  older than 文件1比文件2 舊 。修改時**間爲準
    注意:測試變量的時候最好加上雙引號
        [ -d "$QUAN" ] && echo "yes" || echo "no"
        也可以用測試描述符代替if
        [ 條件1 ] && {
            命令1
            命令2
            命令3
        }
        if [ 條件1 ]
            then
                命令1
                命令2
                命令3
        fi 

字符串測試操作符
    -n "str"  字符串長度不爲0爲真 no zero
    -z “str”    字符串長度爲0 則爲真
    “str1” = “str2”     兩個字符串相等爲真 ==代替=
    “str1” != “str2”        兩個字符串不等爲真
    注意:字符串一定要用“”括起來
            =  != 兩邊要有空格
    [ -n "" ] && echo "sb" || echo "bs"
    bs

整數二元比較操作符
    [] 和test中   (()) 和[[]]中
        -eq             ==或=            相等,equal
        -ne             !=              不相等,no equal 
        -gt             >               大於,greater than
        -ge             >=              大於等於 greater equal
        -lt             <               小於 less than
        -le             <=              小於等於 less equal 
    注意:兩端還是要空格
    [ $A -eq $B ] && echo "A=B" || echo "A!=B"
邏輯操作符:
    [] 和 test中        [[]] 和 (())
     -a                     &&(可用在表達式外部)
     -o                     ||(可用在表達式外部)
     -!                     !  

企業案例:
    如果傳入數字等於1,就打印one 如果等於2,就打印two,其他提示輸入不對並退出
    #!/bin/bash

read -p "please input a number: " innum
[ "$innum" = "1" ] && { #普通字符比較多的使用字符串的語法,使用整數比較容易出錯,除非確定是整數
echo "one"
exit 1
}
[ "$innum" = "2" ] && {
echo "two"
exit 2
}
[ "$innum" = "1" -a $innum = "2" ] && {
echo "input error"
exit 3
}

[[ "$A" =~ [1-3] ]] && echo 8 判斷A是否爲1或2或3,用到通配符,使用[[]]
8

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