【问题标题】:How to correctly send argument to xargs to have it perfect intact如何正确地向 xargs 发送参数以使其完好无损
【发布时间】:2021-07-06 01:10:35
【问题描述】:

这将通过管道传递到 xargs 到 bash:

$ ls
foo
'foo bar'

但没有这样做:

$ n=7; ls| xargs bash -c "for i ;{ echo -e $n \$i ;}" 0

7 foo 
7 foo
7 bar

而不是

7 foo
7 'foo bar'

如何以正确的方式做到这一点?谢谢之前

【问题讨论】:

    标签: bash arguments space


    【解决方案1】:

    一般情况下,don't use ls in scripts

    printf '%s\n' * | xargs printf "$n %s\n"
    

    如果您有 GNU xargs,一个更强大的解决方案是使用空字节而不是换行符作为项目分隔符:

    printf '%s\0' * | xargs -0 printf "$n %s\n"
    

    当然,在这种情况下,单独printf 就足够了。

    printf "$n %s\n" *
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-13
      • 2010-09-29
      • 2010-10-15
      • 1970-01-01
      • 2018-08-06
      • 2010-11-09
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多