我最近更新到Ubuntu 13.04和我的shell腳本之一,此爆料:是什麼導致shell腳本中=和==的解釋不同?
#!/bin/sh
...
if [ "$SHOW_USAGE" == "true" ]; then
./install.sh: 248: [: false: unexpected operator
現在,我明白,我可以通過一個單一的平等取代雙等號(= =)解決這個問題('='),但是在13.04和以前的Ubuntu版本之間,Ubuntu的行爲有什麼不同呢?有沒有辦法恢復以前版本的更靈活的解釋?
取決於你使用的是什麼shell。有些shell現在已經集成了'[''作爲內置命令集成,所以如果你以前的安裝實際上使用'/ usr/bin/test'(它符號鏈接到'''),你會得到不同的行爲。 –
對於嚴格的POSIX合規性,可以使用「=」代替「==」。「從TLDP – user567879
我編輯了問題以表明我正在使用#!/ bin/sh(並且我需要以最大限度保留它兼容性)。 –