用xargs传递多行参数

时间:2019-01-16 14:06:24

标签: xargs

我想使用xargs将文件内容作为带引号的programm参数传递,以跳过临时文件的创建。

使用临时文件,我可以这样:

myprogram > /tmp/lld.json
zabbix_sender -z 127.0.0.1 -s testhost -k llditem -o "`cat /tmp/lld.json`"
rm /tmp/lld.json

但是我不希望对/tmp/lld.json进行额外的操作。

所以我尝试像这样使用xargs

myprogram |
xargs -e -I'{}' zabbix_sender -z 127.0.0.1 -s testhost -k llditem -o "'{}'"

指导xargs联机帮助页:

  

-I replace-str

     

-e [eof-str] ...如果省略 eof-str ,则文件字符串没有结尾。

     

http://man7.org/linux/man-pages/man1/xargs.1.html

但是xargz在每一行中多次执行zabbix-sender

我猜想-I-e选项是互斥的选项。但是我还假设我误解了xargs手册。.

1 个答案:

答案 0 :(得分:0)

这项工作可以吗?

zabbix_sender -z 127.0.0.1 -s testhost -k llditem -o "`myprogram`"

如果您坚持使用xargs来做到这一点,请使用-0

myprogram | xargs -0 -I{} zabbix_sender -z 127.0.0.1 -s testhost -k llditem -o "'{}'"