什麼時候和為什麼

當 shell 執行引數擴充套件命令替換變數或算術擴充套件時,它會掃描結果中的字邊界。如果找到任何單詞邊界,則結果將在該位置拆分為多個單詞。單詞邊界由 shell 變數 IFS(內部欄位分隔符)定義。IFS 的預設值是空格,製表符和換行符,即如果未明確禁止,則會在這三個空格字元上進行單詞拆分。

set -x
var='I am
a
multiline string'
fun() {
    echo "-$1-"
    echo "*$2*"
    echo ".$3."
}
fun $var

在上面的例子中,這是 fun 函式的執行方式:

fun I am a multiline string

$var 分為 5 個 args,只列印 Iama