根据以下问题和反思:
https://unix.stackexchange.com/questions/188658/writing-a-character-n-times-using-the-printf-command
和
How can I repeat a character in bash?
我想学习如何参数化字符/字符串的重复值。例如,以下内容非常有效:
printf " ,\n%0.s" {1..5}
但是,如果我想参数化'5',请说:
num=5
我似乎无法使扩展正确以使其工作。例如:
printf " ,\n%0.s" {1..$((num))}
失败。
任何想法/想法都会受到欢迎 - 我认为有一种方法可以做到这一点,而不必诉诸perl或awk所以只是好奇,如果可能的话。
谢谢!
答案 0 :(得分:3)
您可以使用seq
num=20;
printf '\n%.0s' $(seq $num)
答案 1 :(得分:2)
如果您可以将命令构建为字符串 - 具有您想要的所有参数扩展 - 那么您可以对其进行评估。这将打印X num
次:
num=10
eval $(echo printf '"X%0.s"' {1..$num})
答案 2 :(得分:0)
一种略有不同的方法
$ repeat() {
local str=$1 n=$2 spaces
printf -v spaces "%*s" $n " " # create a string of spaces $n chars long
printf "%s" "${spaces// /$str}" # substitute each space with the requested string
}
$ repeat '!' 10
!!!!!!!!!! # <= no newline
$ repeat $' ,\n' 5
,
,
,
,
,