;;
この入れ子になった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
■適切なインデントを使用すると、追跡が簡単になります;;
。
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
ありがとうハウクラグヒントをください。