;;
이 중첩된 bash 스크립트에 종결자가 충분합니까(또는 너무 많습니까?) case
?
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
나는 몇 년 동안 분노로 공격적인 행동을 취한 적이 없습니다.
답변1
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
답변2
여러 패턴 문자열을 처리해야 하는 경우:
$3이 문자열이라고 가정합니다.
...
CRITICAL:HARD:@("A"|"B"|"C"))
...
Bash에서는 스크립트에 다음을 추가해야 합니다.
shopt -s extglob
감사해요하우크라그팁을 주세요.