【发布时间】:2020-10-19 03:23:45
【问题描述】:
我正在编写一些脚本来帮助组织一些东西。我已将我的代码从我的原始代码简化为:
$ 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 $(...)中?这使您受制于I just assigned a variable, butecho $variableshows something else。 -
查尔斯,你可能只是个救命恩人。我可能一直在试图解决错误的事情
-
... 不过,这并不是说您的 xargs 使用是正确的。不过,我现在不在电脑前测试它或任何建议的替代品。
-
sh -c 'echo -e "alpha \n"'无法工作,因为echo -e不是 POSIX,而您正在调用 POSIXsh。请改用sh -c 'printf "%s \n\n" "alpha"'。 -
@user1934428 这就是为什么它是评论而不是答案的原因。至于为什么我推荐
printf而不是echo特别是在转义特殊字符时,这里是:stackoverflow.com/q/64079604/7939871