我想使用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 ,则文件字符串没有结尾。
但是xargz
在每一行中多次执行zabbix-sender
。
我猜想-I
和-e
选项是互斥的选项。但是我还假设我误解了xargs
手册。.
答案 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 "'{}'"