我想遍历数组并在bash脚本中打印出每个元素:
array=(10, 0.2, 0.03,)
for ele in ${array[@]}
do
echo "$ele blah"
done
然而,它吐了出来:
10, blah
blah
0.2, blah
blah
0.03 blah
即使我添加了
IFS=","
结果是:
10 blah
blah
0.2 blah
blah
0.03 blah
我怎样才能得到:
10 blah
0.2 blah
0.03 blah
在此之后,我想将每一行对齐如下:
10.00 blah
0.200 blah
0.030 blah
更新:
第1和第2列分隔6个空格
有没有简单的方法可以做到这一点?感谢。
答案 0 :(得分:3)
删除数组声明中的逗号。
array=(10 0.2 0.03)
您可能还希望在for
循环中加倍扩展,除非您100%确定分词不会导致问题(请注意,在您的示例数据的情况下,它不会)。
for ele in "${array[@]}"
要格式化输出,请尝试(而不是echo
)
printf "%06.3f blah\n" "$ele"
如果在小数点分隔符之前需要更多数字,则需要增加%
符号后的数字,如果不需要,则删除0以避免打印前导零。例如:
printf "%10.3f blah\n" "$ele"
答案 1 :(得分:0)
您可以删除逗号:
for ele in `echo ${array[@]} | sed 's/,//g'`;
而不是
for ele in ${array[@]}
sed是一个非常有用的工具,用于在文本中进行小操作,例如使用“s”函数替换。绝对值得玩:)
对于对齐,您可以使用制表符而不是空格和printf而不是echo。所以使用:
printf "%-10.3fblah\n" $ele
而不是
echo "$ele blah"