在某國外shell程式設計書籍上看到對shell程式設計的建議中提到,建議在條件測試時使用=而不是==
對這個建議表示疑惑,在大多數的程式設計語言中判斷相等一般都是==符号,經過測試=的确也可以用來進行相等判斷;但為什麼會有盡量使用=而不是==的建議呢。
經過查閱資料并實際驗證發現,這個建議是為了送出shell程式設計的相容性;
給出一個例子
#!/bin/sh
WWW=A
if [ "$WWW" == "A" ]; then
echo 'support ==';
else
echo 'not support ==';
fi
測試結果
dash:
: [: A: unexpected operator
not support ==
tcsh:
test: unknown operator ==
bash:
support ==
ksh:
support ==
在[]中使用==是bash裡的做法, 不符合posix标準
Do not use ==. It is only valid in a limited set of shells, and will produce unspecified behavior.
參考
http://stackoverflow.com/questions/10849297/compare-a-string-in-unix