看來,這兩個運營商幾乎是相同的 - 是否有區別?我應該何時使用=
以及==
?Bash中運算符「=」和「==」有什麼區別?
54
A
回答
71
您必須((...))
在數字比較使用==
:
$ if ((3 == 3)); then echo "yes"; fi
yes
$ if ((3 = 3)); then echo "yes"; fi
bash: ((: 3 = 3 : attempted assignment to non-variable (error token is "= 3 ")
您可以在[[ ... ]]
或[ ... ]
或test
請使用字符串比較:
$ if [[ 3 == 3 ]]; then echo "yes"; fi
yes
$ if [[ 3 = 3 ]]; then echo "yes"; fi
yes
$ if [ 3 == 3 ]; then echo "yes"; fi
yes
$ if [ 3 = 3 ]; then echo "yes"; fi
yes
$ if test 3 == 3; then echo "yes"; fi
yes
$ if test 3 = 3; then echo "yes"; fi
yes
「字符串比較?」,你說?
$ if [[ 10 < 2 ]]; then echo "yes"; fi # string comparison
yes
$ if ((10 < 2)); then echo "yes"; else echo "no"; fi # numeric comparison
no
$ if [[ 10 -lt 2 ]]; then echo "yes"; else echo "no"; fi # numeric comparison
no
29
關於POSIX有一個細微的差別。從Bash reference摘錄:
string1 == string2
True如果字符串相等。可以使用=
來代替==
以符合嚴格的POSIX標準。
+0
bash雖然沒有區別嗎?只是一個可移植性問題? – 2010-04-08 14:11:26
+0
@ T.E.D .:不,請參閱我的答案。 – 2010-04-08 16:19:13
相關問題
- 1. SQL中的IN運算符和=運算符有什麼區別?
- 2. 比較運算符和邏輯運算符有什麼區別?
- 3. 有什麼區別`和$(Bash中有什麼區別?
- 4. PHP中的「和」和「&&」運算符有什麼區別嗎?
- 5. 運算符>>和運算符>>>在java中有什麼區別?
- 6. bash中的'和'有什麼區別?
- 7. 運算符重載kotlin中的plus和plusAssign有什麼區別?
- 8. OR和||有什麼區別? PHP中的運算符?
- 9. 運算符>>>在Java和JavaScript中有什麼區別?
- 10. 點(。)運算符和 - >在C++中有什麼區別?
- 11. c編程中的*和&運算符有什麼區別?
- 12. obj c函數中(+)和( - )運算符有什麼區別
- 13. 在JavaScript中,運算符'〜'和'!'之間有什麼區別?
- 14. 在Solr中,NOT和 - (minus)運算符有什麼區別?
- 15. 在php中!=和<>運算符有什麼區別?
- 16. SQL中NOT和!=運算符有什麼區別?
- 17. Julia中的「==」和「===」比較運算符有什麼區別?
- 18. Lucene中 - 和NOT運算符有什麼區別?
- 19. PostgreSQL中#>和 - >>運算符有什麼區別?
- 20. MySQL中的<>和!=運算符有什麼區別?
- 21. 貓鼬中的.in()和all。()運算符有什麼區別?
- 22. python中的/和//運算符有什麼區別?
- 23. C中的投射運算符和後綴有什麼區別?
- 24. 單(&)和雙(&&)&符號二元運算符有什麼區別?
- 25. 重載賦值運算符和任何其他運算符有什麼區別?
- 26. ggplot2中的「+」運算符與magrittr中的「%>%」運算符有什麼區別?
- 27. 有什麼區別:=和= mysql的賦值運算符
- 28. !=和<>運算符有什麼區別?
- 29. InheritsFrom和is運算符有什麼區別?
- 30. +運算符和+函數有什麼區別是vhdl?
儘管如此,你不應該在''''或'test'中使用'=='。 '=='不是POSIX規範的一部分,並且不適用於所有shell('dash',特別是不能識別它)。 – chepner 2015-11-10 19:39:38
@chepner:這是真的,但問題是關於Bash的具體問題。 – 2015-11-10 20:01:25