0

在循环内,我有一个变量用于计算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。然后我想简单地知道每个的 10% 是多少x$i并将其存储在 variables 中y$i。而且,正如我上面所说,我使用该脚本得到了完全错误的结果。例如,对于x0=155287510,我得到y0=20。

4

1 回答 1

6

问题在于,这$x$i不是一个名为的变量的值,x$i而是变量x和的值的串联i

您可以轻松地将脚本转换为使用 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'
于 2014-09-23T10:50:01.887 回答