所以我正在测试以下内容:
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
的格式字符串中有。$@
在这种情况下没有什么特别的。例如: