来自man bash
上的readarray
:
-t
在将行分配给数组元素之前,从行读取中删除任何尾随换行符。
bash中readarray的-t默认行为是什么?
我用-t测试了几次,没有使用换行符的文件 没有注意到差异。
答案 0 :(得分:5)
确实存在差异:
# Newlines are retained as part each array element
$ readarray foo <<EOF
> foo
> bar
> baz
> EOF
$ printf '%s' "${foo[@]}"
foo
bar
baz
# Newlines are stripped
$ readarray -t foo <<EOF
foo
bar
baz
EOF
$ printf '%s' "${foo[@]}"
foobarbaz
printf
的格式不包含换行符,因此第一个示例仅在单独的行上打印每个元素,因为每个元素本身都以换行符结尾。在第二个示例中,所有三个元素都打印在同一行上。