Как вы делаете деловые заявления с диапазонами

Я должен:

Сделайте оператор case, который отобразит оценку после ввода. Без цикла или условного.

  • 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)?

Я бы сделал это, он должен удовлетворять требованиям.

 #!/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), но я думаю, что это нарушает правило об условностях.

Он вернет F, если вы попытаетесь ввести 101 или любое другое значение «вне диапазона». Я сделал это, полагая, что этого никогда не произойдет.

Это также будет работать,

 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