測試用法
- 格式:
test 表達式
或
[ 表達式 ]
條件爲
真
時返回0值
,條件爲假
返回非0值
[
後和]
前的空格是必不可少的
- 比較運算符:
-eq
相當於=
-ge
相當於>=
-gt
相當於>
-le
相當於<=
-lt
相當於<
-ne
相當於!=
- 測試demo:
$ test 1 -eq 1
$ echo $?
0
$ test 1 -eq 2
$ echo $?
1
測試只有一個字符串,無操作符時:返回值都爲0,例:
$ test 1
$ echo $?
0
$ test 0
$ echo $?
0
$ test 001021
$ echo $?
0
$ [ 344 ]
$ echo $?
0
- 字符串運算符
string
測試字符串是否不爲空
-n string
同上,測試字符串是否不爲空
-z string
測試字符串是否爲空
string1 = string2
測試兩個字符串是否相等
string1 != string2
測試兩個字符串是否不相等
注意=和!=兩側必須有空格,否則當成一個字符串測試是否爲空
$ test ""
$ echo $?
1
$ test -n ""
$ test -n "" ; echo $?
1
$ test "" ; echo $?
1
$ test "hhh" = "hhh"
$ echo $?
0
$ test "hhh" = "hhh "
$ echo $?
1
$ test "hhh"!="hhh"
$ echo $?
0
- 文件操作符
-d
file 是否爲目錄
-e
file 是否存在
-f
file 是否爲普通文件
-r
file 是否進程可讀
-s
file 是否長度不爲0
-w
file 是否可寫
-x
file 是否可執行
-L
file 是否爲符號化鏈接(L不可小寫) - 邏輯運算符
! 表達式
取反
表達式1 -a 表達式2
同時爲真
表達式1 -o 表達式2
有一個爲真
判斷
一個demo即可說明用法:
$ cat test.sh
#!/bin/bash
echo "輸入一個數進行測試"
read num
if [ 1 -eq $num ] ; then
echo 輸入了1
exit 0
elif [ $num -lt 5 ]
then
echo "大於1小於5"
exit 2
else
case "$num" in
5)
echo "輸入了5";;
6)
echo "輸入了6";;
7)
echo "輸入了7";;
*)
echo "大於7";;
esac
exit 3
fi
$ ./test.sh ; echo '$?:'$?
輸入一個數進行測試
1
輸入了1
$?:0
$ ./test.sh ; echo '$?:'$?
輸入一個數進行測試
3
大於1小於5
$?:2
$ ./test.sh ; echo '$?:'$?
輸入一個數進行測試
6
輸入了6
$?:3
$ ./test.sh ; echo '$?:'$?
輸入一個數進行測試
8
大於7
$?:3
需要注意的是case 每一個匹配條件的執行後面必須有;;,不然會提示錯誤,我之前以爲是繼續執行下一個。
- 算數及位運算符
大部分與c語言一致,以下比較特別
** 冪運算
~ 按位非
^ 按位異或
- 不同進制數字表示
2進製表示:
$ let "num=2#10" ; echo $num
2
8進製表示:
$ let "num=010";echo $num
8
$ let "num=8#10" ; echo $num
8
16進製表示:
$ let "num=16#10" ; echo $num
16
#
用來表示的進制更廣,任何進制都可以