如何在 bash 代码/脚本中重复命令来表示输入 Alt n 作为重复次数,然后按一个键,然后按 Enter?
例如有行代码/脚本(typing Alt 7) f (Enter)
答案1
如果您的意思是重复一个字符n次,你可以这样做:
printf -v string X%.0s {1..12}
X
将在 中存储 12 秒的序列$string
。
或者:
$ echo "$(printf X%.0s {1..12})"
XXXXXXXXXXXX
尽管这意味着分叉一个额外的过程。
您还可以使用辅助函数,例如:
repeat_string() {
awk -- 'BEGIN{for (i = 0; i < ARGV[1]; i++) printf "%s", ARGV[2]}' "$@"
}
进而:
echo "$(repeat_string 12 X)"
在 中zsh
,您可以使用其填充运算符:
$ echo ${(l[12][X])}
XXXXXXXXXXXX
这是一个l
用 s 填充到长度 12 的空扩展 eft X
。还有一个类似的r
ight padding 参数扩展标志。
对于存储在变量中的计数和字符:
n=12 c=X
echo ${(pl[$n][$c])}
zsh
还有一个repeat
关键字(灵感来自tcsh
's):
$ echo "$(repeat 12 printf %s X)"
XXXXXXXXXXXX
使用bash
,您始终可以编写一个repeat
可以重复简单命令的函数:
repeat() {
local n="$1"
shift
while ((n-- > 0)); do
"$@"
done
}
然后echo "$(repeat 12 printf %s X)"
像上面那样。
您可以模拟repeat
关键字以使用别名重复复合命令:
alias repeat='i=0; while test "$((i++))" -lt'
然后再做echo "$(repeat 12; do printf %s X; done)"
例子。