條件測試
1.條件測試
? 判斷某需求是否滿足,需要由測試機制來實現;
專用的測試表達式需要由測試命令輔助完成測試過程;
? 評估布爾聲明,以便用在條件性執行中
? 若真,則返回0
? 若假,則返回1
2.測試命令:
? test EXPRESSION
? [ EXPRESSION ]
? [[ EXPRESSION ]]
注意: EXPRESSION前后必須有空白字符
3.條件性的執行操作符
? 根據退出狀態而定,命令可以有條件地運行
? && 代表條件性的 AND THEN
? || 代表條件性的 OR ELSE
? 例如:
$ grep -q no_such_user /etc/passwd || echo 'No such user' No such user
$ ping -c1 -W2 station1 &> /dev/null && echo "station1 is up" \
> || (echo 'station1 is unreachable'; exit 1)
station1 is up
若ping -c1 -W2 station1執行成功,則echo "station1 is up",否則echo 'station1 is unreachable'; exit
4.test命令
? 長格式的例子:
$ test "$A" == "$B" && echo "Strings are equal"
$ test “$A” -eq “$B”&& echo "Integers are equal"
? 簡寫格式的例子:
$ [ "$A" == "$B" ] && echo "Strings are equal"
$ [ "$A" -eq "$B" ] && echo "Integers are equal"
5.bash的測試類型
數值測試:(注意前面有“-”)
–gt: 是否大于; greater than
-ge: 是否大于等于; greater equal
-eq: 是否等于; equal
-ne: 是否不等于; not equal
-lt: 是否小于; less than
-le: 是否小于等于; less equal
eg: [ "$A" -eq "$B" ]
字符串測試:
==:是否等于;
>: ascii碼是否大于ascii碼
<: 是否小于
!=: 是否不等于
=~: 左側字符串是否能夠被右側的PATTERN所匹配
注意: 此表達式一般用于[[ ]]中;
-z "STRING":字符串是否為空,空為真,不空為假
-n "STRING":字符串是否不空,不空為真,空為假
注意:用于字符串比較時的用到的操作數都應該使用引號
文件測試
? 存在性測試
-a FILE:同-e
-e FILE: 文件存在性測試,存在為真,否則為假;
? 存在性及類別測試
-b FILE:是否存在且為塊設備文件;
-c FILE:是否存在且為字符設備文件;
-d FILE:是否存在且為目錄文件;
-f FILE:是否存在且為普通文件;
-h FILE 或 -L FILE:存在且為符號鏈接文件;
-p FILE:是否存在且為命名管道文件;
-S FILE:是否存在且為套接字文件;
? 文件權限測試:
-r FILE:是否存在且可讀
-w FILE: 是否存在且可寫
-x FILE: 是否存在且可執行
? 文件特殊權限測試:
-g FILE:是否存在且擁有sgid權限;
-u FILE:是否存在且擁有suid權限;
-k FILE:是否存在且擁有sticky權限;
? 文件大小測試:
-s FILE: 是否存在且非空;
? 文件是否打開:
-t fd: fd表示文件描述符是否已經打開且與某終端相關
-N FILE:文件自動上一次被讀取之后是否被修改過
-O FILE:當前有效用戶是否為文件屬主
-G FILE:當前有效用戶是否為文件屬組
6.雙目測試:
FILE1 -ef FILE2: FILE1與FILE2是否指向同一個設備上的相同inode
FILE1 -nt FILE2: FILE1是否新于FILE2;
FILE1 -ot FILE2: FILE1是否舊于FILE2;
7.組合測試條件
? 第一種方式:
COMMAND1 && COMMAND2 并且
COMMAND1 || COMMAND2 或者
! COMMAND 非
如: [ -e FILE ] && [ -r FILE ]
? 第二種方式:
EXPRESSION1 -a EXPRESSION2 并且
EXPRESSION1 -o EXPRESSION2 或者
! EXPRESSION 非
(使用單括號)
必須使用測試命令進行
[ -z “$HOSTNAME” -o ”$HOSTNAME " == "localhost.localdomain" ] && hostname www.magedu.com
[ -f /bin/cat -a -x /bin/cat ] && cat /etc/fstab
原創文章,作者:ldt195175108,如若轉載,請注明出處:http://www.www58058.com/33706