場合によっては、標準出力に何もない可能性があるスクリプトがあります。スクリプトの最後で xargs を使用して、必要な行を別のコマンドに渡します。私の問題は、標準出力に何もないときに一般的な「使用法:プログラムarg1 arg2」エラーメッセージが表示されることです。
これをどのように避けることができますか?
答え1
-r
またはオプションが必要です--no-run-if-empty
。
この特定の動作はクロスプラットフォームで実行するのが難しいことに注意してください。 BSDバージョンはxargs
デフォルトで実行されます。-r
GNUバージョンでは必要です。 FreeBSDバージョンはGNU互換性フラグをxargs
無視します。-r
Mac OS Xバージョンはこのフラグを受け入れずにエラーを発生させますillegal option
。
$OSTYPE
その後、オペレーティングシステムベースの検出を使用してクロスプラットフォームスクリプトを作成することを選択できます。より良い方法は、独自の動作を検出することですxargs
。-r
失敗した場合(ステータスコード> 0)、実行または実行しません-r
。
答え2
マンページを読むべき理由についての教訓...
-r
または標識は--no-run-if-empty
私の友人です。