bashスクリプトプログラミングcase文

1510 ワード

Case文は複雑なif文を簡略化するために使用されます
#!/bin/bash
while true; do
  read -p "Enter your score:" score
  if [ "$score" == "quit" ]; then
          exit 0
  elif [ $score -lt 60 ]; then
          echo "stupid"
          break
  elif [[ $score -ge 60 && $score -lt 70 ]]; then
          echo "C"
          break
  elif [[ $score -ge 70 && $score -lt 80 ]]; then
          echo "B"
          break
  elif [[ $score -ge 80 && $score -lt 90 ]]; then
          echo "A"
          break
  elif [ $score -ge 90 ]; then
          echo "A+"
          break
  else 
          continue  
  fi
done

ケース文の構文フォーマット:
case expression in
pattern1)
    suite1
    ;;
pattern2)
    suite2
    ;;
...
patternn)
    suiten
    ;;
*)
    other_suiten
    ;;
esac

caseのpatternで使用できるモード:
a|b:aまたはb
*:任意の長さの任意の文字
    ?: 任意の1文字
[]:範囲の指定
case文を使用して、上記のコードを書き換えます.次のようにします.
#!/bin/bash
while true; do
  read -p "Enter your score:" score
  case $score in
  [1-5][0-9])
          echo "stupid"
          ;;
  6[0-9])
          echo "C"
          ;;
  7[0-9])
          echo "B"
          ;;
  8[0-9])
          echo "A"
          ;;
  9[0-9])
          echo "A+"
          ;;
  100)
          echo "excelent"
          ;;
  quit)
          exit 0
          ;;
  *)
          continue
          ;;
  esac
done