如何使用EOF作为xargs
中的分隔符,以便读取整个文件?xargs - 使用EOF作为分隔符
E.g.
cat foo.py | xargs -d EOF -I % python -c %
我知道还有其他方法来获得上面的例子中工作,但我有兴趣在学习如何做同样的xargs的。
如何使用EOF作为xargs
中的分隔符,以便读取整个文件?xargs - 使用EOF作为分隔符
E.g.
cat foo.py | xargs -d EOF -I % python -c %
我知道还有其他方法来获得上面的例子中工作,但我有兴趣在学习如何做同样的xargs的。
由于命令行参数不能包含空字节,因此您的问题基本上预先假设您的输入不包含空字节。因此,最简单的方法是使用空字节作为分隔符,从而保证将整个输入视为单个项目。
要做到这一点,使用--null
或-0
选项:
cat foo.py | xargs --null -I % python -c %
或者,更简洁:
xargs -0 python -c < foo.py
这么说,我无法想象这是什么有用的。如果你知道你只会有一个输入项目,那么为什么要使用xargs
呢?为什么不直接写
python -c "$(< foo.py)"
?
是的,我知道替代品 - 我只是想知道是否可以使用xargs来实现。谢谢! – jeffreyveon
对于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
你能详细说明你试图达到的是什么吗? – devnull