だから私は以下をテストしています。
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" $@
ベストアンサー1
printf
ここで何が起こるのかは、位置形式パラメータ(およびその他の項目)よりも多くの引数を渡すと%s
形式が繰り返されることです。\n
フォーマット文字列にあるように、複数行にわたって繰り返されます。この場合は特別なものはありません$@
。
たとえば、
$ printf 'Foo: %s\n' bar baz
Foo: bar
Foo: baz
$ printf 'Foo: %s %s\n' bar baz
Foo: bar baz