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

时间:2017-01-18 14:20:45

标签: arrays bash

来自man bash上的readarray

  

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

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

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

1 个答案:

答案 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的格式不包含换行符,因此第一个示例仅在单独的行上打印每个元素,因为每个元素本身都以换行符结尾。在第二个示例中,所有三个元素都打印在同一行上。