2

我正在寻找一个 unix shell 命令来附加文件的内容作为另一个 shell 命令的参数。例如:

command << commandArguments.txt
4

3 回答 3

3

xargs 是专门为此构建的:

cat commandArguments.txt | xargs mycommand

如果文件中有多行,则可以使用xargs -L1 -P10一次并行运行十个命令副本。

于 2012-08-12T00:02:07.803 回答
2

xargs采用其标准并将其格式化为 shell 命令的位置参数。它最初旨在处理较短的命令行限制,但它也可用于其他目的。

例如,在最后一分钟内,我使用它并行连接到 10 个服务器并检查它们的正常运行时间:

echo server{1..10} | tr ' ' '\n' | xargs -n 1 -P 50 -I ^ ssh ^ uptime

此命令管道的一些有趣方面:

  • 要连接的服务器的名称取自传入管道
  • 需要将tr每个名称放在自己的行中。这是因为xargs需要以行分隔的输入
  • -n选项控制每次命令调用使用多少传入行。 表示为每条传入线路-n 1创建一个新进程。ssh
  • 默认情况下,参数附加到命令的末尾。使用-I,可以指定一个标记 ( ^),该标记将替换为参数。
  • 控制同时-P运行多少子进程,极大地拓宽了有趣的可能性空间。
于 2012-08-11T23:52:50.873 回答
1
command `cat commandArguments.txt`

使用反引号将使用封闭命令的结果作为外部命令中的文字

于 2012-08-11T23:46:59.477 回答