catを使用するbashスクリプトでは、拡張ファイルワイルドカードを使用できません。

catを使用するbashスクリプトでは、拡張ファイルワイルドカードを使用できません。

端末に入力すると

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対話型シェルではオンになっており、非対話型シェルではオフになっています。

関連情報