我正在寻找一个unix shell命令来附加文件的内容作为另一个shell命令的参数。例如:
command << commandArguments.txt
答案 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`
使用反引号将使用附带命令的结果作为外部命令
中的文字