昨天在定位一個bug的時候,需要用shell腳本對字符串進行比較,出了一個小問題,就搜索總結了一下。
第一種方法:-eq
對比字符串是否相等,我首先想到的就是 -eq,然而打印的結果不正確。看筆記:
-eq 檢測兩個整數是否相等,相等返回 true。 [ $a -eq $b ] 返回 false。
原來是我記錯了,-eq只支持整數的比較,而我比較的是字符串,當然不行了。
假如是小數比較的話,會報錯:
代碼與運行結果:
1 #!/bin/bash
2 a=11.1
3 b=11.1
4 if [ $a -eq $b ]
5 then
6 echo yes
7 else
8 echo not
9 fi
./test_eq.sh: line 4: [: 2.1: integer expression expected
不相等
這里不管a、b是否相等,都會報:不相等
第二種方法: =
這個就通用了,不管是字符串、整數、小數,都可以比較。
第三種方法: ==
與第二種發法結果一致,只是表達意思不一樣。
還有就是小數的比較,也可以用awk或者bc。