对于元组case switch,你能否为元组中的任何变量指定glob?
我很好奇,当参数是一个元组时,case switch如何在bash shell中工作。我将使用的示例是prepare-commit-msg的git-hook;但是,我会解释所以不需要知识。
脚本的参数是:$1=commit message
,$2=commit type
和$3=SHA-1
。提交消息$1
与我们的目的无关。提交类型$2
可以是以下任何字符串:消息,模板,合并,压缩或提交。 SHA-1 $3
是40个字符串或null。
使用git分发的代码是
#!/bin/bash
case "$2,$3" in
merge,)
# do something for merge with no SHA-1
;;
*)
# do something for everything else
;;
如果我的问题的答案是肯定的,那么这是正确的实施方式吗?
#!/bin/bash
case "$2,$3" in
merge,)
# do something for merge with no SHA-1
;;
commit,*)
# do something for commits with SHA-1
;;
*,)
# do something for non merge with no SHA-1
;;
*,*)
# do something for non commit with SHA-1
;;
答案 0 :(得分:1)
引用bash手册页。
case命令首先扩展word,并尝试依次使用与路径名扩展相同的匹配规则将其与每个模式匹配(请参阅下面的Pathname Expansion)。 使用代字号扩展,参数和变量扩展,算术替换,命令替换,进程替换和引用删除来扩展单词。检查的每个模式都使用波形扩展,参数和变量扩展,算术替换,命令替换和流程替换进行扩展。
我认为您的实施是正确的。