![如何将命令输出作为几个参数传递给另一个命令](https://linux22.com/image/645333/%E5%A6%82%E4%BD%95%E5%B0%86%E5%91%BD%E4%BB%A4%E8%BE%93%E5%87%BA%E4%BD%9C%E4%B8%BA%E5%87%A0%E4%B8%AA%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92%E7%BB%99%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4.png)
我有一个产生如下输出的命令:
$./命令
1 单词1 单词2 单词3
我想将这三个词作为参数传递给另一个命令,如下所示:
$ 命令2 字1 字2 字3
如何将 command1 的输出作为三个不同的参数 $1 $2 $3 传递给 command2 ?
答案1
您可以使用xargs
,标志-t
将xargs
详细显示并打印其执行的命令:
./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