北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

コマンドライン引数のワイルドカードの扱い

上のエントリの絡みで、ワイルドカードの展開についてまとめときます*1

shellは、ワイルドカードを展開してくれます。展開できる物は展開されて@ARGVに入り、展開されない物はそのまま渡ってきます。

$ perl -e 'print map {"$_\n"} @ARGV' * */*
a.txt
b.txt
c.txt
*/*


シングルクォートで囲むと、展開しなくなります。

$ perl -e 'print map {"$_\n"} @ARGV' '*' '*/*'
*
*/*


ちなみに上記はbashでの結果なのですが、zshだとこうなります。こっちの方が誤作動がない親切な動作ですね。

% perl -e 'print map {"$_\n"} @ARGV' * */*
zsh: no matches found: */*


この辺の振舞いって経験的にしか把握してないのですが、どっかにまとまってるんですかねえ??

*1:わかってなくてハマったので・・・orz