OSX中的Unix case语句

时间:2015-04-13 14:41:22

标签: bash unix

我正在尝试将一些Windows bat文件移植到Mac shell脚本

执行包含以下case语句的文件时出现语法错误:

  case ${1} in 
    ( C  | c   ) echo "hoera";; 

其中参数$ {1}以“C”

给出

消息是:

-bash: even: line 6: syntax error near unexpected token `newline'
'bash: even: line 6: `        ( C  | c   ) echo "hoera";; 

根据文档,我认为语法是正确的。我哪里错了?

1 个答案:

答案 0 :(得分:3)

语法应为:

case $var in
  CASE1) COMMAND-LIST;;
  CASE2) COMMAND-LIST;;
esac

每个案例由一个或多个shell patterns组成,由管道分隔 - 您不需要左括号来匹配结束的括号。你的例子应该是:

case ${1} in 
  C|c) echo "hoera";;

或者可能:

case ${1} in 
  [Cc]) echo "hoera";;