在循环内部,我有一个变量用于使用bc
计算另一个变量。
但是,我得到的结果是完全错误的。我有32个文件,名为test0
,test1
,依此类推。
我的脚本如下:
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。
答案 0 :(得分: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'