私のコマンドと一致する正しいパターンは何ですか

私のコマンドと一致する正しいパターンは何ですか

OS:AIX 7.1
私は、ユーザーがいくつかのコマンドを入力して実行できるシェルスクリプトを作成しています。コマンドの1つは次の形式を取ります。

compile appname

アプリケーション名は[ccms | asws]のうちの1つのみです。 Caseステートメントでこれを一致させる正しいパターンは何ですか?

これは私のシェルスクリプトです。

while true
do
 read cmd
 case $cmd in
 "compile(\s)(ccms)|(asws)") compile
  ;;
 *) break
  ;;
 esac
done

compile(){
 ...
}

答え1

readコマンドを分割します。

read cmd arguments
case $cmd in
  compile)
    ;;
esac

答え2

これはすべてのPOSIX互換シェルで機能します。

case $cmd in
    "compile ccms"|"compile asws") compile
    ;;
    *) break
    ;;
esac

関連情報