如何将命令输出作为几个参数传递给另一个命令

如何将命令输出作为几个参数传递给另一个命令

我有一个产生如下输出的命令:

$./命令
1 单词1 单词2 单词3

我想将这三个词作为参数传递给另一个命令,如下所示:

$ 命令2 字1 字2 字3

如何将 command1 的输出作为三个不同的参数 $1 $2 $3 传递给 command2 ?

答案1

您可以使用xargs,标志-txargs详细显示并打印其执行的命令:

./command1 | xargs -t -n1 command2

-n1定义每次调用 时传递的最大参数command2。这将执行:

command2 word1
command2 word2
command2 word3

如果您希望将所有内容作为一次调用的参数,则command2使用以下命令:

./command1 | xargs -t command2

它使用 3 个参数调用 command2:

command2 word1 word2 word3

答案2

您需要“命令替换”,即:将一个命令的输出嵌入另一个命令中

command2 $(command1)

传统上也可以这样做:

command2 `command1`

但通常不建议这种用法,因为不能嵌套它们。

例如:

test.sh:
#!/bin/bash
echo a b c

测试2

#!/bin/bash
echo $2

使用:

./test2.sh $(./test.sh)
b

答案3

我想这对你有帮助

命令1 | xargs 命令2

相关内容