为每个Bash数组项插入新行

3

我正在创建一个bash数组:

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

echo "${arr2}"

输出结果都在同一行上(当我使用awk来获取第一列时,只返回第一个元素)。
我该如何使循环的每次迭代将每个新条目放入数组的新一行中?
1个回答

6

如此所述:https://dev59.com/6nRB5IYBdhLWcg3weHHx#5322980 注意使用$()会删除换行符! 保留换行的方法:使用""

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

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'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接