首页 > 解决方案 > printf - 打印 n 然后在下一行打印一个字符 n 次

问题描述

我有一个变量n,它是一个数字,我正在尝试生成如下所示的输出n=10

10
1 1 1 1 1 1 1 1 1 1

所以第一行是n,第二行由n字符组成,在这个例子1中。

我知道我可以用命令行生成第二行:

$ n=10
$ printf '1 %.0s' {1..$n}
1 1 1 1 1 1 1 1 1 1 %

所以我可以通过这一系列命令得到我想要的输出:

$ n=10
$ printf "$n\n"; printf '1 %.0s' {1..$n}; printf '\n'
10
1 1 1 1 1 1 1 1 1 1

但我不知道如何将这些命令组合成一个printf命令。强调成为一个命令的原因是我试图将此输出重定向到另一个命令进行处理。

我本来打算在Unix Stackexchange上问这个问题,但我在手册中printf看到它与 in 的工作原理相同C,所以我想在这里我可能会得到更好的结果。

FORMAT 控制输出,就像在 C printf 中一样。

标签: linuxshellprintfzsh

解决方案


用于{}对所有命令进行分组,以便您可以将它们全部重定向到下一个命令。

{ printf "$n\n"; printf '1 %.0s' {1..$n}; printf '\n'; } | some_other_command

推荐阅读