Bash:在输出中重用printf变量
是否可以在格式化中多次使用传递给Bash:在输出中重用printf变量,bash,variables,printf,Bash,Variables,Printf,是否可以在格式化中多次使用传递给printf的变量 例如,使用这一行: printf 'Hi %s, welcome to %s. %s is a great place to work. Thanks %s.' "John" "The Icecream Factory" 如何“重用”printf中的第一个和第二个变量 我的想法是: printf 'Hi %s[1], welcome to %s[2]. %s[1] is a great place to
printf
的变量
例如,使用这一行:
printf 'Hi %s, welcome to %s. %s is a great place to work. Thanks %s.' "John" "The Icecream Factory"
如何“重用”printf中的第一个和第二个变量
我的想法是:
printf 'Hi %s[1], welcome to %s[2]. %s[1] is a great place to work. Thanks %s[2].' "John" "The Icecream Factory"
。。。但显然不是这样
期望输出
实际产量
工作环境是Ubuntu 20中的
bash
。虽然我认为不可能使用printf
的内置bash
实现或独立的GNUprintf(1)
程序,但如果你可以将zsh
作为目标,它的printf
版本支持POSIX风格printf(3)
参数索引:
通常,转换规范按顺序应用于每个参数,但它们可以通过将%n$
替换为%n$
和*
替换为*n$
来显式指定要使用的n
第个参数。建议不要将此显式样式的引用与普通样式和handli混合使用此类混合样式的ng可能会在将来发生变化
$printf'您好%1$s,欢迎来到%2$s。%2$s是一个很好的工作场所。谢谢%1$s。\n“约翰”冰淇淋厂
嗨,约翰,欢迎来到冰淇淋厂。冰淇淋厂是一个工作的好地方。谢谢约翰。
虽然我认为不可能使用printf
的内置bash
实现或独立的GNUprintf(1)
程序,但如果可以将zsh
作为目标,那么它的printf
版本支持POSIX风格printf(3)
参数索引:
通常,转换规范按顺序应用于每个参数,但它们可以通过将%n$
替换为%n$
和*
替换为*n$
来显式指定要使用的n
第个参数。建议不要将此显式样式的引用与普通样式和handli混合使用此类混合样式的ng可能会在将来发生变化
$printf'您好%1$s,欢迎来到%2$s。%2$s是一个很好的工作场所。谢谢%1$s。\n“约翰”冰淇淋厂
嗨,约翰,欢迎来到冰淇淋厂。冰淇淋厂是一个工作的好地方。谢谢约翰。
我不相信printf
格式字符支持这一点。您为什么要使用%s
?定义变量更容易,可以在字符串中多次使用,例如n=“John”;f=“the Icecream Factory”;printf“嗨$n,欢迎使用$f.$f是一个很好的工作场所。谢谢$n。”
是的,这很好,但我被告知在printf
格式字符串中使用变量是不好的做法:我不相信printf
格式字符支持这一点。您必须使用%s
的原因是什么?定义变量更容易,可以在字符串中多次使用,例如n=“John”;f=“冰淇淋工厂”;printf“嗨$n,欢迎来到$f.$f是一个工作的好地方。谢谢$n。“
是的,这很好,但有人告诉我,在printf
格式字符串中使用变量是不好的做法:如果将它添加到bash
,它几乎肯定会使用相同的语法fwiw。如果将它添加到bash
,它几乎肯定会使用相同的语法fwiw。
Hi John, welcome to The Icecream Factory. The Icecream Factory is a great place to work. Thanks John.
Hi John, welcome to The Icecream Factory. is a great place to work. Thanks .