【发布时间】:2012-02-07 09:14:22
【问题描述】:
测试几个变量是否都相等的正确方法是什么?
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,因为它是最简单的,而且我的输入可以保证避免警告。
谢谢大家的建议。
【问题讨论】:
-
您只需要对 N 个变量进行 N-1 次测试。如果 var1 和 var2 相等,并且 var2 和 var3 相等,那么您不必测试 var1 和 var3 是否相等。你有固定数量的变量吗?
标签: bash conditional