globが管理ディレクトリのリストに展開されると、if
ステートメントは次のようになります。
if [ -d app/1management app/2management ]
-d
引数を取るのは1つだけなので、bashは残りのディレクトリをどう処理するかを知りません。bashするには、二項演算子を含めるのを忘れたようです。
次のことを行うことができます。
for mscript in app/*management; do
if [ ! -d $mscript ]; then
continue
fi
...
done
nullglob
編集:ヨルダンがコメントしたように、以下はおそらく必要ではありませんが、知っておくとよいので、参考のためにここに残しておきます。
1つの警告。app / * managementが何にも展開されない可能性がある場合は、nullglob
ループの前にシェルオプションを設定する必要があります。そうしないと、「app /*management」はシェルグロブではなくリテラル文字列として扱われます。
if ! shopt nullglob; then
setting_nullglob=1
shopt -qs nullglob
fi
for mscript in app/*management; do
...
done
if [ ${setting_nullglob:-0} = 1 ]; then
unset setting_nullglob
shopt -qu nullglob
fi