網路上能找到的相關資料太多了,也太繁雜,但有些人還整理得不錯,下面根據自己的偏好再梳理一下,有些是自己對照著man手冊翻譯的,下面的例子都是自己編造自己測試ok,都是比較實用的東西,方便自己日後參考。
1、算術運算比較運算子(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` ]
2、字串比較運算子
-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,則為真
3、檔案比較運算子
-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 選項
mysql運算子,比較運算子
我也是菜鳥,也是新手,一起學習,一起進步,加油 首先 比較運算子,進行比較之後的 結果如果為真 返回1,結果為假 返回 0 一下為常用的,最基礎的一些沒有列出來 或 不等於 null 的安全等於 null safe between 存在於指定範圍 in存在於指定集合 is null 為 null i...
python運算子 比較運算子
比較運算子的運算結果會得到乙個bool型別,也就是邏輯判定,要麼是真true,要不就是false 大於 小於 不說了,看看不等於,用 表示。大於等於 和小於等於 也不多說了。result 10 9 print result 比較兩個值是否相等,用 表示。注意它和 is 是有區別的 print 10 ...
8 運算子 比較運算子
a 4 b 7 print a b false print a b true 不等於 print a b true特殊情況,如果是字串的比較,實際上是編碼位置的比較,實際上,計算機中最終執行的都是二進位制,所以計算中本身是沒有任何的中文,或者字母的。所以,我們看到的中文,字母,實際上是別人提前把文字...