符合我的命令的正确模式是什么

符合我的命令的正确模式是什么

操作系统:AIX 7.1
我正在编写一个 shell 脚本,它让用户输入一些命令并执行它,其中一个命令采用以下形式:

compile appname

应用程序名称只能是 [ccms|asws] 之一,在 case 语句中匹配它的正确模式是什么?

这是我的 shell 脚本:

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 的 shell 中工作:

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

相关内容