@anderberni

Как сделать так, чтобы программа закрывалась после третьего неудачного ввода?

#!/bin/bash
Func () {
echo "Введите имя"
read name
case "$name" in
Саша|Алекс)
echo "Полное имя: Александр";;
*)
echo "Неизвестное имя системе,просим прощения"
esac
}

while true; do
Func
done


То есть после того,как оно выведет "Неизвестное имя системе,просим прощения" третий раз,программа должна закрыться
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
3vi1_0n3
@3vi1_0n3
#!/bin/bash

FAILS=0
Func(){
read -p "Введите имя: "
case "$REPLY" in
  Саша|Алекс|Alex)
    echo "Полное имя: Александр"
    return 1
    ;;
  *)
    FAILS=$(($FAILS + 1))
    return 0
    ;;
esac
}

while [ $FAILS -lt 3 ] && Func
do
    echo "Неизвестное имя системе, просим прощения"
done
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
yarkov
@yarkov
Помог ответ? Отметь решением.
Переменная счётчик. При неудачной попытке увеличивать на 1. В while написать "переменная меньше 3".
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
while true; do
вместо тру собственно надо и поставить условие, например проверка переменной, которую ты инкрементируешь
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
i=3
while [ $i -gt 0 ]; do
Func
i=$((i-1))
done

А внутри Func в случае удачи: i=0.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы