bash默认行为中的readarray -t选项?

Fil*_*nov 3 arrays bash

man bashreadarray:

-t
在分配给数组元素之前,从读取的行中删除任何尾随换行符.

bash中readarray的-t默认行为是什么?

我用-t测试了几次,没有使用换行文件,没有注意到差异.

che*_*ner 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
Run Code Online (Sandbox Code Playgroud)

格式printf不包含换行符,因此第一个示例仅在单独的行上打印每个元素,因为每个元素本身都以换行符结尾.在第二个示例中,所有三个元素都打印在同一行上.