xargs
ファイル全体が読み取られるように、EOF を区切り文字として使用するにはどうすればよいですか?
例えば
cat foo.py | xargs -d EOF -I % python -c %
上記の例を機能させる方法が他にもあることは知っていますが、xargs で同じことを行う方法を学ぶことに興味があります。
コマンドライン引数に null バイトを含めることはできないため、質問は基本的に、入力に null バイトが含まれていないことを前提としています。そのため、最も簡単な方法は、null バイトを区切り文字として使用することです。これにより、入力全体が 1 つの項目として扱われることが保証されます。
これを行うには、--null
or-0
オプションを使用します。
cat foo.py | xargs --null -I % python -c %
または、より簡潔に:
xargs -0 python -c < foo.py
とは言っても、これが何に役立つのか想像できません。入力項目が 1 つしかないことがわかっている場合、なぜ使用する必要があるxargs
のでしょうか。なぜただ書かないのか
python -c "$(< foo.py)"
?
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