0

xargsファイル全体が読み取られるように、EOF を区切り文字として使用するにはどうすればよいですか?

例えば

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

上記の例を機能させる方法が他にもあることは知っていますが、xargs で同じことを行う方法を学ぶことに興味があります。

4

2 に答える 2

3

コマンドライン引数に null バイトを含めることはできないため、質問は基本的に、入力に null バイトが含まれていないことを前提としています。そのため、最も簡単な方法は、null バイトを区切り文字として使用することです。これにより、入力全体が 1 つの項目として扱われることが保証されます。

これを行うには、--nullor-0オプションを使用します。

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

または、より簡潔に:

xargs -0  python -c  < foo.py

とは言っても、これが何に役立つのか想像できません。入力項目が 1 つしかないことがわかっている場合、なぜ使用する必要があるxargsのでしょうか。なぜただ書かないのか

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

?

于 2013-10-03T05:07:10.790 に答える
1

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
于 2013-10-03T05:44:53.607 に答える