xargsに何も送らない

xargsに何も送らない

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

これをどのように避けることができますか?

答え1

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

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

$OSTYPEその後、オペレーティングシステムベースの検出を使用してクロスプラットフォームスクリプトを作成することを選択できます。より良い方法は、独自の動作を検出することですxargs-r失敗した場合(ステータスコード> 0)、実行または実行しません-r

答え2

マンページを読むべき理由についての教訓...

-rまたは標識は--no-run-if-empty私の友人です。

関連情報