;;
在这个包含嵌套case
的bash 脚本中,我是否有足够的(或者可能太多)终止符?
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
Run Code Online (Sandbox Code Playgroud)
我已经好几年没有生气了。
gee*_*aur 42
如果在;;
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
Run Code Online (Sandbox Code Playgroud)
他们匹配得很好,每个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
Run Code Online (Sandbox Code Playgroud)