端末に入力すると
cat ~/my/+(a|b)/doc
~/my/a/doc と ~/my/b/doc の両方でよく読みますが、このコマンドをスクリプトに入れると次のようになりますbash
。
#!/bin/bash
cat ~/my/'+(a|b)'/doc
エラーが発生します。
cat: ~/my/+(a|b)/doc: No such file or directory
bash
スクリプト内で拡張ワイルドカードを使用できませんか?
答え1
以下を開く必要がありますextglob
。
#!/bin/bash
shopt -s extglob
cat ~/my/+(a|b)/doc
+()
拡張モードであり、extglob
有効になっている場合にのみ認識されます。デフォルトでは、extglob
対話型シェルではオンになっており、非対話型シェルではオフになっています。