13 我有一个产生如下输出的命令: $。/ command1 word1 word2 word3 我想将这三个词作为参数传递给这样的另一个命令: $ command2 word1 word2 word3 如何将command1输出作为三个不同的参数$ 1 $ 2 $ 3传递给command2? linux bash unix shell shell-scripting — 阿迪 source
9 您可以使用xargs,该-t标志xargs将是冗长的,并打印它执行的命令: ./command1 | xargs -t -n1 command2 -n1定义传递给的每个调用的最大参数command2。这将执行: command2 word1 command2 word2 command2 word3 如果您想将所有参数用作一次调用的参数command2,则: ./command1 | xargs -t command2 调用带有2个参数的command2: command2 word1 word2 word3 — 混沌 source 如果command1的输出长于该ARG_MAX怎么办?我遇到了将文件内容传递给函数的情况。 — 0xc0de
4 您需要“命令替换”,即:将一个命令的输出嵌入到外部 command2 $(command1) 传统上,这也可以通过以下方式完成: command2 `command1` 但是通常不建议使用这种用法,因为您不能嵌套它们。 例如: test.sh: #!/bin/bash echo a b c test2.sh #!/bin/bash echo $2 采用: ./test2.sh $(./test.sh) b — 西雷克斯 source 如果这样做,它将作为单个参数传递command1输出,而不是像三个不同的参数一样传递:$ command2 $(cat output_from_command1) — Addy 2014年 啊,对了,一秒钟……放在那里的那只猫并不需要。 — Sirex 2014年 为我工作。如果我的command2回显$ 2(即第二个参数),我将得到“ word2”。 — Sirex 2014年
ARG_MAX
怎么办?我遇到了将文件内容传递给函数的情况。