我很难理解为什么仅在以下一种情况下保留尾随换行符。见脚本:
declare -a B
B[1]='foo'
B[2]=$'foo\n'
B[3]="$( echo 'foo' )"
B[4]="$( echo -e 'foo\n' )"
B[5]="$( printf '%s\n' 'foo' )"
B[6]="$( cat <<END
foo
END
)"
# Print each value.
for RESULT in "${B[@]}"
do
echo "[${RESULT}]"
done
运行时的结果:
[foo]
[foo
]
[foo]
[foo]
[foo]
[foo]
我期待第一个缺少换行符;第四个和第六个各有两个换行符;和其他人每个都有一个换行符。但相反,只有第二个有换行符。
请问这是怎么回事?
正如在 Command Substitution 中所记录的那样
man bash
,大胆强调我的: