Answers:
如果在;;s 上使用明智的缩进,则更容易跟踪。
case "$1" in
OK)
# Nothing needs done
echo -n "OK:1"
;;
CRITICAL)
case "$2" in
SOFT)
case "$3" in
1|2)
soft_reset_pool.sh
;;
esac
;;
HARD)
case "$3" in
1|2)
hard_reset_pool.sh
;;
3|4)
hard_reset_service
;;
esac
;;
esac
;;
esac
他们匹配得很好,每个case 标签)都有一个终止;;
话虽如此,有时将所有内容折叠成非嵌套的更容易和/或更清晰case:
case "$1:$2:$3" in
OK:*)
# Nothing needs done
echo -n "OK:1"
;;
CRITICAL:SOFT:[12])
soft_reset_pool.sh
;;
CRITICAL:HARD:[12])
hard_reset_pool.sh
;;
CRITICAL:HARD:[34])
hard_reset_service
;;
esac
如果您必须处理多个模式字符串:
假设$ 3是一个字符串。
...
CRITICAL:HARD:@("A"|"B"|"C"))
...
在Bash中,您需要在脚本上添加以下内容:
shopt -s extglob
感谢Hauke Laging提供的小费。