测试多个变量是否都相等的正确方法是什么?
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 的,因为它是最简单的,而且我的输入可以保证避免警告。
谢谢大家的建议。
最佳答案
如果你想测试任意数量的项目是否相等(我们称它们为 $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
关于Bash:测试多个变量的相互相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8812089/