为什么shell case语句中的第一个模式不能是多重模式?

eze*_*zon 5 shell standards posix

标准描述了的case声明说:

The format for the case construct is as follows:

case word in
  [(]pattern1) compound-list;;
  [[(]pattern[ | pattern] ... ) compound-list;;] ...
  [[(]pattern[ | pattern] ... ) compound-list]
esac

The ";;" is optional for the last compound-list.
Run Code Online (Sandbox Code Playgroud)

为什么不能成为pattern1多重模式呢?这似乎相当武断,虽然我很确定它一定不是.

谢谢!

Gab*_*abe 1

我认为你误解了他们的意思。您链接到的页面上的语法没有显示出这样的区别:

case_clause : 换行 case_list Esac 中的案例 WORD 换行符
                 | 换行符中的案例 WORD 换行符 case_list_ns Esac
                 | 换行符 Esac 中的案例 WORD 换行符
                 ;
case_list_ns : case_list case_item_ns
                 | case_item_ns
                 ;
案例列表 : 案例列表 案例项目
                 | 案例项
                 ;
case_item_ns :模式 ')' 换行符
                 | 模式 ')'compound_list 换行符
                 | '('模式')'换行
                 | '('pattern')'compound_list 换行符
                 ;
case_item : 模式 ')' 换行 DSEMI 换行
                 | 模式 ')'compound_list DSEMI 换行符
                 | '('pattern')' 换行 DSEMI 换行
                 | '('pattern')'compound_list DSEMI 换行符
                 ;
pattern : WORD /* 应用规则 4 */
                 | 模式“|” WORD /* 不应用规则 4 */