有没有办法在 bash 中重复打印相同的字符,就像您可以使用此构造在 python 中执行此操作一样:
print('%' * 3)
gives
%%%
实际上有一个单行代码可以做到这一点:
printf "%0.s-" {1..10}
prints
----------
这是传递给的参数的细分printf
:
- %s - 指定任意长度的字符串
- %0s - 这指定了一个零长度的字符串,但如果参数更长,它将打印整个内容
- %0.s - 这与上面相同,但句点说明
printf
如果字符串长于指定长度(为零),则截断该字符串
- {1..10} - 这是一个大括号扩展,实际上传递参数“1 2 3 4 5 6 7 8 9 10”
- “-” - 这是提供给的额外字符
printf
,它可以是任何东西(对于“%”,您必须先用另一个“%”对其进行转义,即“%%”)
- 最后,默认行为
printf
如果您给它的参数多于格式字符串中指定的参数,则循环回到格式字符串的开头并再次运行它。
这里发生的事情的最终结果是你告诉printf
如果提供的字符串长度大于零,您希望它打印一个没有额外字符的零长度字符串。然后在此零长度字符串之后打印一个“-”(或任何其他字符集)。然后,您为其提供 10 个参数,因此它会打印 10 个零长度字符串,每个字符串后跟一个“-”。
这是一款可以打印任意数量的重复字符的单行文本!
Edit:
巧合的是,如果你想打印$variable
您只需稍微更改参数即可使用的字符seq
而不是如下的大括号扩展:
printf '%0.s-' $(seq 1 $variable)
这会将参数“1 2 3 4 ... $variable”传递给printf
,打印精准$variable
“-”的实例
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)