【小蝸牛五二無聊之做
】
網絡上能找到的相關資料太多了,也太繁雜,但有些人還整理得不錯,下面根據本身的偏好再梳理一下,有些是本身對照着man手冊翻譯的,下面的例子都是本身編造本身測試OK,都是比較實用的東西,方便本身往後參考。
一、算術運算比較運算符(bash自身不能比較浮點數)
-eq 等於
[ $num1 -eq $num2 ]
-ne 不等於
[ 100 -ne $num1 ]
-lt 小於
[ 100 -lt `expr $num1 + $num2` ]
-le 小於或等於
[ 100 -le `expr $num1 \* $num2` ]
-gt 大於
[ 100 -gt `expr $num1 / $num2` ]
-ge 大於或等於
[ 100 -ge `expr $num1 % $num2` ]
二、字符串比較運算符
-z string 若是 string 長度爲零,則爲真
[ -z "`ps aux | grep mysql`" ]
-n string 若是 string 長度非零,則爲真
[ -n "$string" ]
【注意】 $string 必定要放在雙引號裏面 "$string",不然使用 -n -z 的結果都爲真!
string1 != string2 若是 string1 與 string2 不一樣,則爲真
[ "$str1" != "Snail" ]
string1 == string2 若是 string1 與 string2 相同,則爲真
[ "$str1" == "$str2" ]
(上面用一個 = 也能夠,在嚴格的 POSIX 兼容下使用)
string1 < string2 若是 string1 按字典順序比較小於 string2,則爲真
string1 > string2 若是 string1 按字典順序比較大於 string2,則爲真
三、文件比較運算符
-a filename 若是 filename 存在,則爲真
[ -e $HOME/.bashrc ]
-e filename (同上)
-b filename 若是 filename 存在,而且是塊文件,則爲真
[ -e /dev/loop0 ]
-c filename 若是 filename 存在,而且是字符文件,則爲真
[ -e /dev/ttyS0 ]
-d filename 若是 filename 存在,而且爲目錄,則爲真
[ -d /home/snail ]
-f filename 若是 filename 存在,而且爲常規文件,則爲真
[ -f /dev/ttyS0 ]
-g filename 若是 filename 存在,而且爲set-group-id,爲真
[ -f $HOME/ak47 ]
-h filename 若是 filename 存在,而且爲符號鏈接,則爲真
[ -h /bin/vi ]
-L filename (同上)
-k filename 若是 filename 存在,而且設置了sticky位,爲真
[ -k /bin/ping ]
-p filename 若是 filename 存在,而且爲有名管道(FIFO),真
[ -p /tmp/pipe ]
-r filename 若是 filename 存在,而且可讀,則爲真
[ -r /etc/passwd ]
-s filename 若是 filename 存在,而且大小不爲零,爲真
[ -s ./none-zero ]
-u filename 若是 filename 存在,而且爲set-user-id,爲真
[ -f $HOME/ak47 ]
-w filename 若是 filename 存在,而且可寫,則爲真
[ -w /var/log/mail ]
-x filename 若是 filename 存在,而且可執行,則爲真
[ -x ./start.sh ]
下面這些不經常使用的:
-t fd 若是文件描述符被打開並指向一個終端,則爲真
[ -t /proc/1/fd/10 ]
【提示】在 /proc/進程號/fd 下能夠找到文件描述符:)
-O filename 若是 filename 存在,而且被有效用戶ID所擁有,則爲真
-G filename 若是 filename 存在,而且被有效組ID所擁有,則爲真
-S filename 若是 filename 存在,而且爲一個socket,則爲真
[ -S /tmp/mysql.sock ]
-N filename 若是 filename 存在,而且在上次讀取後被修改過,則爲真
-o optname 若是 shell 選項 optname 被開啓,則爲真
【提示】使用 set -o 來查看
file1 -nt file2 若是 file1 比 file2 新,或者 file1 存在 file2 不存在,則爲真
file1 -ot file2 若是 file1 比 file2 舊,或者 file2 存在 file1 不存在,則爲真
file1 -ef file2 若是 file1 和 file2 都指向一樣的設備(device)和索引節點號(inode numbers),則爲真
【提示】查看文件的索引節點能夠用 ls -i 選項
------------------------------------------------------------------------------------------
趙小蝸牛
QQ: 755721501
在不斷奉獻中謀求生存發展、打造本身的優秀品質,用人性最本質最動人的一面「營銷」本身!