使用 echo 的输出编号作为 seq 的输入

Use output number of echo as input for seq

作为输入,我得到 echo [number]。例如:echo 5。 我需要获取从 1 到 [number] 的数字序列作为输出。 所以如果我得到 5 作为输入,我需要:1 2 3 4 5(全部在单独的一行上)。

我知道我可以使用 seq 5 得到 1 2 3 4 5 但问题是我需要使用管道。

所以最后的命令应该是这样的:echo 5 | seq [number] 它应该给出 1 2 3 4 5 作为输出。我的问题是我不知道如何从 echo 获取输出作为我对 seq.

的输入

您可以使用 echo 命令的输出,如下所示:

seq $(echo 5)

如果你正在处理一个变量,你可以这样做:

var=5
echo $var
seq $var

假设 echo 5 是未知程序的示例替换,该程序会将单个数字写入标准输出并且此输出应用作 seq 的参数,您可以使用脚本像这样:

文件seqstdin:

#!/bin/sh
read num
seq "$num"

你可以像这样使用它

echo 5 | ./seqstdin

获取输出

1
2
3
4
5

您也可以将所有内容写在一行中,例如

echo '5'| { read num; seq "$num"; }

备注:
此代码不包含任何错误处理。它使用第一行输入作为 seq 的参数。如果 seq 不接受这个值,它将打印一条错误消息。
我没有使用 read -rIFS=,因为我希望输入的数字适合 seq。使用其他输入,您可能会得到意想不到的结果。