2014-02-26 17 views
2

我要檢查,如果所有三個變量都相同,則打印味精檢查三個變量UNIX shell腳本相同

if [ "$x1" == "$x2" == "$3" ]; 
then 
echo "all are same" 
fi 

我收到此錯誤:

[: too many arguments

+0

可能重複[Bash:測試多個變量的相互平等?](http://stackoverflow.com/questions/8812089/bash-test-mutual-equality-of-multiple-variables) – pfnuesel

回答

7

你不能比較三個變量當時。取而代之的是,不要在塊比較它們中的兩種:

if [ "$x1" = "$x2" ] && [ "$x2" = "$x3" ]; 
then 
    echo "all are same" 
fi 
+1

感謝兄弟... 。 – user3250373

1

使用:

if [ "$x1" = "$x2" -a "$x2" = "$x3" ] 

由於您使用bash測試here

+1

POSIX標準本身建議使用'[...] && [...]'而不是'[... -a ...]'。 – chepner

+0

'&&'*外*命令是標準的POSIX。如果你正在使用'[[',你可以在'[[''裏面加入&&'*]。 – chepner

3

,我推薦使用

if [[ "$x1" == "$x2" && "$x2" == "$x3" ]]; then 

如果您需要/想要使用[ ... ]保持POSIX兼容性,那麼你不應該使用==

if [ "$x1" = "$x2" ] && [ "$x2" = "$x3" ]; then 

bash讓您使用非標準==[,但有小點混合標準,不規範的行爲。