Bash
bash 特殊參數 $@ 是否被視為 printf 中的循環?
所以我正在測試以下內容:
foo() { printf "\nAll the parameters, each on a separate line:\n" printf "param: %s\n" "$@" } foo The "nicely colored" rainbow
輸出是:
All the parameters: param: The param: nicely colored param: rainbow
因此,如果我理解正確,因為
IFS
設置為\t\n
我們得到由製表符分隔的參數(的第一個字元IFS
)。但是為什麼它們列印在不同的行中?
是每個參數的 printf 執行。即 bash 是否將其轉換為 for 循環?
以下(不帶雙引號)也輸出相同的結果:
printf "param: %s\n" $@
這裡發生的情況是,當您傳遞
printf
的參數多於(%s
和其他事物)的位置格式參數時,它將重複格式。它在多行上重複它,因為你\n
的格式字元串中有。$@
在這種情況下沒有什麼特別的。例如:
$ printf 'Foo: %s\n' bar baz Foo: bar Foo: baz $ printf 'Foo: %s %s\n' bar baz Foo: bar baz