printf - 打印 n 然后在下一行打印一个字符 n 次

printf - Print n and then print a character n times in the next line

我有一个变量 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的手册上看到它和C的手册一样,所以我想在这里我可能会得到更好的结果。

FORMAT controls the output as in C printf.

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

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