【问题标题】:xargs lines containing -e and -n processed differently包含 -e 和 -n 的 xargs 行以不同方式处理
【发布时间】:2021-03-24 22:07:24
【问题描述】:

使用 xargs (GNU findutils) 4.7.0 运行以下命令时

xargs -n1 <<<"-d -e -n -o"

我得到这个输出

-d

-o

为什么 -e 和 -n 没有出现在输出中?

【问题讨论】:

  • 因为echo -eecho -n

标签: echo xargs


【解决方案1】:

来自man xargs

[...] 并执行命令(默认为 /bin/echo)[...]

所以它运行:

echo -d
echo -e
echo -n
echo -o

但是来自man echo:

-n     do not output the trailing newline

-e     enable interpretation of backslash escapes

echo -n 不输出任何内容,echo -e 输出您在输出中看到的一个空换行符。

【讨论】:

  • 获得所需输出的一种方法是调用 printf 而不是默认的 echo 命令xargs printf "%s\n" &lt;&lt;&lt;"-d -e -n -o"- 这就是我最终要做的。
  • to get the desired output 我不明白,要获得相同的输出,您可以tr ' ' '\n'printf "%s\n" -d -e -n -osed 's/ /\n/g' &lt;&lt;&lt;"-d -e -n -o" 或真的只是echo $'-d\n-e\n-n\n-o'。 IE。我在这里看到xargs 没有任何价值。
  • 你是对的。有更好的方法来实现同样的目标。
猜你喜欢
  • 1970-01-01
  • 2011-03-09
  • 2013-05-21
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
相关资源
最近更新 更多