【问题标题】:xargs - use EOF as delimeterxargs - 使用 OF 作为分隔符
【发布时间】:2013-10-09 16:09:12
【问题描述】:

如何使用 EOF 作为xargs 中的分隔符,以便读取整个文件?

例如

cat foo.py | xargs -d EOF -I % python -c %

我知道还有其他方法可以使上述示例正常工作,但我有兴趣学习如何使用 xargs 来做同样的事情。

【问题讨论】:

  • 您能否详细说明您想要实现的目标是什么?

标签: bash xargs


【解决方案1】:

由于命令行参数永远不能包含空字节,因此您的问题基本上预设了您的输入不包含空字节。因此,最简单的方法是使用空字节作为分隔符,从而保证将整个输入视为单个项目。

为此,请使用--null-0 选项:

cat foo.py | xargs --null -I % python -c %

或者,更简洁:

xargs -0  python -c  < foo.py

也就是说,我无法想象这有什么用处。如果您知道您将只有一个输入项,那么为什么要使用 xargs 呢?为什么不直接写

python -c "$(< foo.py)"

?

【讨论】:

  • 是的,我知道替代方案 - 我只是想知道是否可以使用 xargs 实现相同的目标。谢谢!
【解决方案2】:

xargs 读取整个文件并将其转换为单个参数将是无用的行为。

你想做什么:

# replace % with the contents of foo.py and pass as an argument
cat foo.py | xargs -d EOF -I % python -c %

可以这样做:

# pass contents of foo.py as a single argument
python -c "$(cat foo.py)"

但有什么意义,因为你可以这样做:

python foo.py

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    相关资源
    最近更新 更多