可能重複:
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的怪癖。你爲什麼不給出一個答案而不是一個可疑的評論炫耀你的優越性? –