【发布时间】:2017-03-29 09:55:25
【问题描述】:
echo "who are you" | xargs -i@ echo `echo @ | sed "s/who/where/"`
预期输出:
where are you
实际输出:
who are you
注意 - 这不是实际用例,而是一个示例测试用例。
【问题讨论】:
-
你真正想要完成什么,你为什么在这里使用
xargs?显而易见、直接且正确的方法就是echo "who are you" | sed "s/who/where/" -
... 一个非常迂回但名义上正确的尝试可能是
echo "who are you" | xargs -i@ sh -c 'echo @ | sed "s/who/where/"' -
我没有尝试完成任何事情,我正在学习脚本,只是想知道这个班轮有什么问题。 大家好,请忽略波浪号之前的反斜杠。
-
我认为你错过了这样一个事实,即反引号中的任何内容(或者
bash$(...)语法)在管道的其余部分之前运行。结果,您实际上正在运行echo "who are you" | xargs -i@ echo @,正如您所注意到的,这有点毫无意义......