可能重复:
Printf example in bash does not create a newline为什么bash数组忽略换行符?
我有一个示例脚本 “array-test.sh” 它汇集三个功能到一个阵列:
[[email protected] ~]$ cat array-test.sh
#!/usr/bin/env bash
function1() {
printf '%s\n\n\n' "cat"
}
function2() {
printf '%s\n\n\n' "dog"
}
function3() {
printf '%s\n\n\n' "mouse"
}
for function in\
function1\
function2\
function3; do
array[$((index++))]=$($function)
done
echo "${array[@]}"
[[email protected] ~]$ ./array-test.sh
cat dog mouse
[[email protected] ~]$
然而,换行字符丢失。什么导致这种行为?
我相信'$()'行为像反向运算符。 –
你为什么发布这个复杂的代码?你可以用'echo'$(function1)'' –
@KolyolyHorvath重现问题:因为这是问题的实质,通常是最困难的事情。你(声称)立即看到它的事实只能证明你比OP更习惯于bash的怪癖。你为什么不给出一个答案而不是一个可疑的评论炫耀你的优越性? –