パターンが変数内に格納されているケースステートメントとパターンを一致させようとしています。最小限の例を次に示します。
PATTERN="foo|bar|baz|bla"
case "foo" in
${PATTERN})
printf "matched\n"
;;
*)
printf "no match\n"
;;
esac
残念ながら「|」エスケープされているようです (興味深いことに、"*" または "?" はエスケープされていません)。これを機能させるには、つまり「foo」に一致させるにはどうすればよいですか? パターンは動的に構築されるため、変数に格納する必要があります。これは、POSIX 互換シェルで動作する必要があります。