Bash:重复字符可变次数

Kid*_*ter 5 string bash repeat

根据以下问题和思考:

https://unix.stackexchange.com/questions/188658/writing-a-character-n-times-using-the-printf-command

如何在 bash 中重复一个字符?

我想了解如何参数化字符/字符串的重复值。例如,以下内容非常有效:

printf "   ,\n%0.s" {1..5}
Run Code Online (Sandbox Code Playgroud)

但是,如果我想参数化 '5',请说:

num=5
Run Code Online (Sandbox Code Playgroud)

我似乎无法正确进行扩展以完成这项工作。例如:

printf "   ,\n%0.s" {1..$((num))}
Run Code Online (Sandbox Code Playgroud)

失败。

任何想法/想法都会受到欢迎 - 我认为有一种方法可以做到这一点,而不必求助于 perl 或 awk,所以只是好奇是否有可能。

谢谢!

xva*_*van 5

您可以使用 seq

num=20;
printf '\n%.0s' $(seq $num)
Run Code Online (Sandbox Code Playgroud)


Rob*_*vis 3

如果您可以将命令构建为字符串(具有所需的所有参数扩展),那么您就可以对其进行评估。这会打印 Xnum次:

num=10
eval $(echo printf '"X%0.s"' {1..$num})
Run Code Online (Sandbox Code Playgroud)