为每个bash数组项插入新行

时间:2015-03-30 09:34:54

标签: arrays bash

我创建了一个bash数组:

    for i in *.txt; do
    arr2+=$(printf "%s\n" "${arr[@]: 0: 1}  $arr[@]: 1: 1}")
done

echo "${arr2}"

输出全部在同一行(当我使用awk获取第一列时,只返回第一个元素。)

如何让for循环的每次迭代将每个新条目放入换行符中的数组?

1 个答案:

答案 0 :(得分:4)

如上所述:https://stackoverflow.com/a/5322980/4716013 小心删除尾随新行的$()! 保留新行的一种方法:使用""

因此必须更新您的命令,例如:

for i in *.txt; do
  tmp=$(printf "$i")
  arr2+="$tmp\n" # <--- here we preserve the new line!
done

echo -e "${arr2}" # option '-e' allow interpretation of the '\n'