physpolyglot

主にPC関連の自分用メモのうち、役立ちそうなものを共有します。

xargsに空文字列が渡ったときのMacとLinuxでの挙動の違い

今流行りのpecoを使ったシェルコマンドを書いているときに、 xargsが空文字列を受け取ったときの挙動がMacScientific Linux(以降SL)で違って戸惑った。

echo | xargs echo "hoge"

としたときにMacは何もエコーされないのに対し、SLだとhogeがエコーされる。

SLでは-rオプションをつけることで、空文字列が渡ってきたときに無視することは出来るが、Macではエラーになってしまう。

http://linuxjm.sourceforge.jp/html/GNU_findutils/man1/xargs.1.html によれば、rオプションはGNUの拡張らしい。

Macにgxargsが(MacPortsで)入っていたのでこれを使うことにする。