2015-08-27 66 views
0

shell腳本的條件有什麼不對下面的語法,我不斷收到[:參數太多如果有多個條件,包括檢查空字符串

所有的變量都是字符串,我也已經介紹var3str3,二等於確保我們不是在比較兩個空值,有沒有其他更好的選擇來對付它

if [ "$var1" = "$var2" = "$var3" && "$str1" = "$str2" = "$str3" ] 
then 
echo " something" 
elif [ "$var1" = "$var2" = "$var3"] 
then 
echo something else 
elif [ "$str1" = "str2" = "str3" ] 
then 
echo something else 
else 
exit 
fi 

回答

1
  1. 你不能做a = b = c在測試中([...]
  2. 不能使用&&, ||[...]測試,而是使用-a (and) -o (or)

所以解決您的代碼,就像這樣:

if [ "$a" = "$b" -a "$a" = "$c" -a "$d" = "$x" ]; then 
... 

如果你想使用&&, ||你可以使用[[...]]條件表達式求值,這是bash內置

+0

我試過如果([「$ var1」=「$ var2」=「$ var3」] -a [「$ str1」=「$ str2」=「$ str3」])但一世t不工作相同的錯誤 – user3785023

+0

@ user3785023我不知道你是否已經閱讀我的答案。做一個'man test',你會看到 – Kent

+0

如果沒有這樣的選擇來做x = y = z那麼有沒有什麼辦法來檢查x和y是否爲空,然後我們做x = y。如果[-n「$ a」-a -n「$ b」-a $ a -eq $ b] – user3785023

相關問題