我创建了一个bash数组:
for i in *.txt; do
arr2+=$(printf "%s\n" "${arr[@]: 0: 1} $arr[@]: 1: 1}")
done
echo "${arr2}"
输出全部在同一行(当我使用awk获取第一列时,只返回第一个元素。)
如何让for循环的每次迭代将每个新条目放入换行符中的数组?
答案 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'