这是一个示例函数:
function example { echo "TextBefore $@ TextAfter" ; }
Run Code Online (Sandbox Code Playgroud)
这是使用该函数的命令:
example A{1..5}B
Run Code Online (Sandbox Code Playgroud)
TextBefore A1B A2B A3B A4B A5B TextAfter
Run Code Online (Sandbox Code Playgroud)
TextBefore A1B TextAfter
TextBefore A2B TextAfter
TextBefore A3B TextAfter
TextBefore A4B TextAfter
TextBefore A5B TextAfter
Run Code Online (Sandbox Code Playgroud)
这就像我能描述的那样好。如果您理解它并知道更好的描述方式,请编辑问题。
如该示例所示,如何使每个 [在此处插入单词] 单独执行?
Fre*_*ddy 11
尝试这个:
function example { printf 'TextBefore %s TextAfter\n' "$@"; }
Run Code Online (Sandbox Code Playgroud)
使用printf
而不是echo
. 该printf
实用程序采用格式字符串作为其第一个参数(它始终可以是单引号字符串),并且该字符串将包含其他参数的占位符:
printf 'TextBefore %s TextAfter\n' "$@"
Run Code Online (Sandbox Code Playgroud)
中的参数"$@"
将被插入到 给出的位置%s
。由于格式字符串中只有一个%s
占位符,因此格式字符串将依次为每个参数重用。printf
这与其他语言的工作方式不同。
请注意,printf
默认情况下不输出终止换行符。
例子:
$ printf 'AAA %s BBB\n' 1 2 3 4 5
AAA 1 BBB
AAA 2 BBB
AAA 3 BBB
AAA 4 BBB
AAA 5 BBB
Run Code Online (Sandbox Code Playgroud)
如果格式化字符串中有更多占位符,这些占位符将由给定的参数依次填充printf
。如果仍有更多可用参数,则在填充所有占位符后,将重用格式化字符串。
$ printf 'AAA %s %03d BBB\n' 1 2 3 4 5
AAA 1 002 BBB
AAA 3 004 BBB
AAA 5 000 BBB
Run Code Online (Sandbox Code Playgroud)
因此你的函数可能看起来像
printf 'TextBefore %s TextAfter\n' "$@"
Run Code Online (Sandbox Code Playgroud)
也可以看看:
归档时间: |
|
查看次数: |
666 次 |
最近记录: |