Заявление о случаях Bash с непревзойденными узорами

StackOverflow https://stackoverflow.com/questions/20353313

  •  25-08-2022
  •  | 
  •  

Вопрос

Итак, я попытался искать это в Google, и я не могу найти ответ. То, что я пытаюсь сделать, это создать оператор CASE в BASH, но если пользователь входит в другой номер, чем в списке, он просто выходит из сценария. Как сделать его ошибкой, а затем попросить пользователя выбрать один из вариантов?

Например, мой оператор по делу

case $ans in
1) echo "Running Project 1..."
   sleep 2
   ./project1.sh
;;
2) echo "Running Project 2..."
   sleep 2
   ./project2.sh
;;
Qq) echo "Exiting"
    exit
;;
esac

Таким образом, любые варианты, отличные от 1, 2, QQ, он даст ошибку, в которой говорится о неверном выборе, попробуйте еще раз.

Это было полезно?

Решение

Вам нужна такая петля и логическая переменная, как это:

flag = true
while [  $flag ]; do
    case $ans in
        1) echo "Running Project 1..."
           sleep 2
           ./project1.sh
        ;;
        2) echo "Running Project 2..."
           sleep 2
           ./project2.sh
        ;;
        Qq) echo "Exiting"
            flag = false
        ;;
    esac
done
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top