linux 比較運算子

2021-06-04 20:37:15 字數 2913 閱讀 3199

網路上能找到的相關資料太多了,也太繁雜,但有些人還整理得不錯,下面根據自己的偏好再梳理一下,有些是自己對照著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特殊情況,如果是字串的比較,實際上是編碼位置的比較,實際上,計算機中最終執行的都是二進位制,所以計算中本身是沒有任何的中文,或者字母的。所以,我們看到的中文,字母,實際上是別人提前把文字...