Jim*_*Jim 5 shell bash parameter shell-script
所以我正在测试以下内容:
foo() {
printf "\nAll the parameters, each on a separate line:\n"
printf "param: %s\n" "$@"
}
foo The "nicely colored" rainbow
Run Code Online (Sandbox Code Playgroud)
输出是:
All the parameters:
param: The
param: nicely colored
param: rainbow
Run Code Online (Sandbox Code Playgroud)
所以如果我理解正确,因为IFS设置为\t\n我们得到由制表符分隔的参数( 的第一个字符IFS)。
但是为什么它们被打印在不同的行中?
是为每个参数运行 printf 。即 bash 是否将其转换为 for 循环?
以下(不带双引号)也输出相同的结果:
printf "param: %s\n" $@
phe*_*mer 17
这里发生的事情是,当您传递的printf参数多于 (%s和其他东西) 的位置格式参数时,它将重复格式。它在多行上重复,因为您有\n格式字符串。没有什么特别的$@在这种情况下。
例如:
$ printf 'Foo: %s\n' bar baz
Foo: bar
Foo: baz
$ printf 'Foo: %s %s\n' bar baz
Foo: bar baz
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1182 次 |
| 最近记录: |