Zshで、「**/*.js
」のようなglobパターンを使ってスクリプトを書いたとき、パターンにマッチするファイルが見つからないと「no matches found」というエラーが起きます。
たとえば、次のコードのように、拡張子がjsのファイル名を出力するものがあったとします。
main.zsh
echo **/*.js
これを実行したとき、jsファイルが1つ以上見つかれば、ファイル名が出力され正常終了します。
正常終了
a/x.js y.js
一方で、jsファイルがひとつもないと、次のようなエラーが出ます。
エラー終了
main.sh:1: no matches found: **/*.js
このエラーが発生すると、処理がそこで終了していまいます。
(N)
をつけるとエラーを抑制できる
このエラーを抑制するには、(N)
をパターンの末尾に追加します。
main.zsh
echo **/*.js(N)
これをつけて実行すると、マッチするファイルが見つからなくてもエラーになりません。
このN
はnull globと呼ばれるものです。