나는 다음을 수행해야 한다:
입력 시 레벨을 표시하는 사례 설명을 작성하세요. 루프나 조건이 없습니다.
- A=90-100, B=80-89, C=70-79, D=60-69, F=0-59
이것이 내가 지금까지 가지고 있는 것입니다:
echo -n "What is your test score? (in percentage): "
read percentage
case $name in
9?) echo "A" ;;
8?) echo "B" ;;
7?) echo "C" ;;
6?) echo "D" ;;
5?) echo "F" ;;
4?) echo "F" ;;
3?) echo "F" ;;
2?) echo "F" ;;
1?) echo "F" ;;
[0-9]) echo "F" ;;
*) echo "Please enter another number"
read percentage
;;
esac
범위(예: 59-0)를 사용하여 설명을 작성하려면 어떻게 해야 하나요?
답변1
이렇게 하면 요구 사항을 충족해야 합니다.
#!/bin/bash
echo -n "What is your test score? "
read score
case $score in
100) echo "A" ;;
9[0-9]) echo "A" ;;
8[0-9]) echo "B" ;;
7[0-9]) echo "C" ;;
6[0-9]) echo "D" ;;
*) echo "F" ;;
esac
처음에는 9[0-9]|100)을 사용했지만 이는 조건문의 규칙을 위반하는 것 같습니다.
101 또는 기타 "범위를 벗어난" 값을 입력하려고 하면 F가 반환됩니다. 나는 이런 일이 결코 일어나지 않을 것이라고 가정하고 있습니다.
답변2
이것은 또한 작동합니다 -
echo -n "What is your test score? (in percentage): "
read per
case $per in
([9][0-9]|100) echo "A" ;;
([8][0-9]) echo "B" ;;
([7][0-9]) echo "C" ;;
([6][0-9]) echo "D" ;;
[0-9]|[1-5][0-9]|59) echo "F" ;;
*) echo "Please enter another number"
read percentage;;
esac