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

时间:2020-10-19 20:28:55

标签: linux shell printf zsh

我有一个变量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像C printf一样控制输出。

1 个答案:

答案 0 :(得分:2)

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

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