salary=(30000 45000 15000 40000)
average=37500
ans=0
for i in ${salary[@]}
do
if [ $((i<average)) ]
then
ans=$((ans+1))
fi
done
echo $ans
我正在使用 for 循环遍历工资数组,在 for 循环内部,有一个 if 条件。
数组中只有两个字段适合if [ $((i<average)) ]
条件,30000 和 15000。
但它显示 4
预期输出为 2
算术计算的额外[..]
是多余的。它的存在"强制"对算术计算结果进行字符串计算。$((..))
中的"0"或"1"中的任何一个都被评估为[ -n 0 ]
和[ -n 1 ]
,这始终为真。
所以只需单独使用算术运算符或使用[..]
内部的算术比较器,即
if (( i < average )); then
或
if [ "$i" -lt "$average" ]; then