用于检查三个变量的unix shell脚本是相同的

use*_*373 2 unix bash shell

我想检查所有三个变量是否相同然后打印消息

if [ "$x1" == "$x2" == "$3" ];
 then 
 echo "all are same"
fi
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

[: 争论太多

fed*_*qui 8

您当时无法比较三个变量.相反,请将它们以两个为一组进行比较:

if [ "$x1" = "$x2" ] && [ "$x2" = "$x3" ];
then
   echo "all are same"
fi
Run Code Online (Sandbox Code Playgroud)


che*_*ner 5

既然你正在使用bash,我建议使用

if [[ "$x1" == "$x2"  && "$x2" == "$x3" ]]; then
Run Code Online (Sandbox Code Playgroud)

如果您需要/想要使用 来维护 POSIX 兼容性[ ... ],那么您不应该使用==

if [ "$x1" = "$x2" ] && [ "$x2" = "$x3" ]; then
Run Code Online (Sandbox Code Playgroud)

bash允许您将非标准==与 一起使用[,但是混合标准和非标准行为没有什么意义。