附加文件内容作为unix shell命令的参数

时间:2012-08-11 23:45:14

标签: bash shell unix

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

command << commandArguments.txt

3 个答案:

答案 0 :(得分:3)

xargs是专门为此而建的:

cat commandArguments.txt | xargs mycommand

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

答案 1 :(得分: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控制并发运行的子进程数,大大扩展了有趣的可能性空间。

答案 2 :(得分:1)

command `cat commandArguments.txt`

使用反引号将使用附带命令的结果作为外部命令

中的文字