测试几个变量是否相等的正确方法是什么?
if [[ $var1 = $var2 = $var3 ]] # syntax error
是否有必要编写如下内容?
if [[ $var1 = $var2 && $var1 = $var3 && $var2 = $var3 ]] # cumbersome
if [[ $var1 = $var2 && $var2 = $var3 && $var3 = $var4 ]] # somewhat better
不幸的是,我可以找到的其他出色的Advanced Bash Scripting Guide和其他在线资源都没有提供这样的示例。
我的主要动机是使用ls -1 $dir | wc -l
来计数几个目录是否都具有相同数量的文件。
注意“ var1”等是示例变量。我正在寻找一种解决方案,以解决任意变量名称的问题,而不仅仅是那些带有可预测数字结尾的变量。
更新
我接受了Richo的回答,因为这是最普遍的回答。但是,我实际上正在使用Kyle,因为它是最简单的,并且保证了我的输入可以避免警告。谢谢大家的建议。
测试几个变量是否相等的正确方法是什么? if [[$ var1 = $ var2 = $ var3]]#语法错误是否需要编写类似以下内容的东西?如果[[$ var1 = $ var2 && ...
如果要测试任意数量项目的相等性(我们将它们称为$ item1-5,但它们可以是数组)>
st=0
for i in $item2 $item3 $item4 $item5; do
[ "$item1" = "$i" ]
st=$(( $? + st ))
done
if [ $st -eq 0 ]; then
echo "They were all the same"
fi
如果它们是单个单词,您可能会对此感到非常便宜。
传递方法
((编辑以包括分隔符以解决Keith Thompson指出的问题)
对于您的特定情况,这应该起作用:
[ "$var1-$var1-$var1" == "$var2-$var3-$var4" ]
字符-
最好不包含在var1,2,3,4中