无法在 xargs 中打印换行符
Unable to print newline inside xargs
我正在编写一些脚本来帮助组织一些东西。我已将我的代码从原来的代码简化为:
$ echo $(find -type d -maxdepth 5 | grep -E "\./([^/])*/([^/])*/([^/])*/([^/])*"
| cut -d'/' -f 3 | sort | uniq -d | xargs -I R sh -c 'echo -e "alpha \n"')
(R actually doesn't do anything here but it's used in the original)
特别是,我认为我的 xargs 有问题
xargs -I R sh -c 'echo -e "alpha \n"'
我希望看到的是 alpha
被打印多次,每次都换行。但是,我的输出看起来像
alpha alpha alpha...
我一直在网上搜索,试图找到解决此问题的方法,但没有用。我刚开始尝试 bash,有人可以指出我做错了什么吗?
这是的特例。
只有运行一个命令,没有echo
:
$ printf '%s\n' "first line" "second line"
first line
second line
运行 未加引号的命令替换中的命令,正如您当前编写的代码:
$ echo $(printf '%s\n' "first line" "second line")
first line second line
运行 引用命令替换中的命令:
$ echo "$(printf '%s\n' "first line" "second line")"
first line
second line
...所以:如果你没有外echo $(...)
的理由,就把它去掉;如果您确实有理由,请添加引号。
我正在编写一些脚本来帮助组织一些东西。我已将我的代码从原来的代码简化为:
$ echo $(find -type d -maxdepth 5 | grep -E "\./([^/])*/([^/])*/([^/])*/([^/])*"
| cut -d'/' -f 3 | sort | uniq -d | xargs -I R sh -c 'echo -e "alpha \n"')
(R actually doesn't do anything here but it's used in the original)
特别是,我认为我的 xargs 有问题
xargs -I R sh -c 'echo -e "alpha \n"'
我希望看到的是 alpha
被打印多次,每次都换行。但是,我的输出看起来像
alpha alpha alpha...
我一直在网上搜索,试图找到解决此问题的方法,但没有用。我刚开始尝试 bash,有人可以指出我做错了什么吗?
这是
只有运行一个命令,没有echo
:
$ printf '%s\n' "first line" "second line"
first line
second line
运行 未加引号的命令替换中的命令,正如您当前编写的代码:
$ echo $(printf '%s\n' "first line" "second line")
first line second line
运行 引用命令替换中的命令:
$ echo "$(printf '%s\n' "first line" "second line")"
first line
second line
...所以:如果你没有外echo $(...)
的理由,就把它去掉;如果您确实有理由,请添加引号。