【问题标题】:Counting numbers in an array计算数组中的数字
【发布时间】:2015-01-25 09:30:15
【问题描述】:

我一直在处理我的脚本文件,它应该总结一个数字列表,然后从数组中计算任何大于 100 的数字。当我执行脚本时,我的计数是空白的,因为它只计算数组中的最后一个数字,即 17 并且小于 100。我通过放置大于 2 来测试它,当我运行它时,它显示最后一个数字(17) 只。我对在 shell 中创建 if/then 语句很陌生,所以如果有什么看起来不合适或者我遗漏了什么,请告诉我。谢谢你。

下面是我的代码:

#!/bin/sh
sum=0
array=(12 43 16 55 243 312 17)
for i in ${array[@]}; do
    echo $i;
    let sum+=$i
done
echo Total = $sum
if [ $i -gt 2 ];  then
    echo $i
fi

【问题讨论】:

  • 检查并保持计数 in 循环而不是循环之后。
  • /bin/sh 不保证支持数组;请改用#!/bin/bash

标签: arrays shell unix sh


【解决方案1】:

您在for 循环之外使用变量iif 子句应该在 for 循环内。

count=0
for i in ${array[@]}; do
  if [ $i -gt 100 ]; then
    let count++
  fi
done

【讨论】:

    【解决方案2】:

    检查并在循环中保持计数,而不是在循环之后。

    #!/bin/sh
    sum=0
    array=(12 43 16 55 243 312 17)
    for i in "${array[@]}"; do
        echo "$i";
        let sum+="$i"
        if [ $i -gt 2 ];  then
            echo "$i is greater than 2"
        fi
    done
    echo "Total = $sum"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多