by shigemk2

当面は技術的なことしか書かない

BSD系xargsのunterminated quoteとオマケ

unterminated quote はBSD系のxargsでシングルクオート/ダブルクオートが含まれるファイルを操作しようとするときに出てくるエラー。

以下ソースコード(公式ミラー)。引数をパースしようとしているときにシングルクオート/ダブルクオートが含まれていたら unterminated quote エラーが出て終了する。

freebsd/xargs.c at master · freebsd/freebsd · GitHub

対策は、例によってfindするときに -print0 、xargsするときは -0 で区切り文字をヌル文字にする対応をやる。両方でヌル文字対応しないと文字列が揃わないからコケる。

ちなみにGNU系のxargsで同じようにシングルクオート/ダブルクオートのファイルが含まれていたら、 unmatched %s quote が返ってくるようになっている。(シングルクオートならunmatched single quoteだしダブルクオートならunmatched double quote)対策はprint0/0オプションでBSDといっしょ。以下ソース(有志ミラー)

node-gnu-tools/xargs.c at master · c9/node-gnu-tools · GitHub

なお、silver searcherで同じようなファイルを検索しようとすると何もエラーメッセージは返ってこないがexit statusは0じゃなくて1が返る。