如何在for循环中使用bc

时间:2014-09-23 10:28:09

标签: bash for-loop bc

在循环内部,我有一个变量用于使用bc计算另一个变量。 但是,我得到的结果是完全错误的。我有32个文件,名为test0test1,依此类推。 我的脚本如下:

for i in {0..31}; do
  declare x$i=$(wc -l < test$i)
  declare y$i=$(echo $x$i/10 | bc) 
done

对于变量x,我得到了好的结果,即每个x$i存储了对应的test$i的行数。然后,我想简单地知道每个x$i的10%是多少,并将其存储在变量y$i中。而且,正如我上面所说,使用该脚本我得到了完全错误的结果。 例如,对于x0 = 155287510,我得到y0 = 20。

1 个答案:

答案 0 :(得分:6)

问题在于$x$i不是名为x$i的变量的值,而是变量xi的值的连接。

您可以轻松地将脚本转换为使用Bash数组,但似乎您最好在Awk中执行此操作。

declare -a x
declare -a y
for i in {0..31}; do
  x[$i]=$(wc -l < test$i)
  y[$i]=$(echo "${x[$i]}"/10 | bc) 
done

如果您只想要计算结果,

wc -l test[0-9] test[12][0-9] test3[01] |
awk '{$1 /= 10 }1'