xargsに何もパイプしない


14

状況によっては標準出力に何もないスクリプトがあります。スクリプトの最後に、xargsを使用して別のコマンドに行を渡します。私の問題は、stdoutに何もないとき、典型的な「使用法:プログラムarg1 arg2」エラーメッセージが表示されることです。

どうすればこれを回避できますか?


8
回答の「編集」を移動し、独自の回答を受け入れます。このようにして、あなたの発見は他の人に役立つでしょう。meta.unix.stackexchange.com/questions/809/…– andcoz 13
1

1
当時は十分なポイントがありませんでした。今それをします。
リチャード

回答:


13

-rまたは--no-run-if-emptyオプションが必要です。

この特定の動作はクロスプラットフォームにするのが難しいことに注意してください。デフォルトでxargs実行さ-rれるBSDバージョン。GNUバージョンでは必要です。GNUとの互換性のため、FreeBSDバージョンのxargsignore -rフラグ。Mac OS Xバージョンはフラグを受け入れず、エラーをスローしますillegal option

次に$OSTYPE、クロスプラットフォームスクリプトの記述に基づいてOS検出を使用することを選択できます。さらに良いことに、xargsそれ自体の動作を検出してみてください。で実行し-r、それが失敗した場合(ステータスコード> 0)、なしで実行し-rます。


3

マニュアルページを読むべき理由のレッスン…

-rまたは--no-run-if-emptyフラグは私の友人です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.