Цикл Try / Except в оболочке

Я пытаюсь написать сценарий оболочки, в котором должен быть цикл try / except. Как мне сделать такой цикл в оболочке?

В основном я пытаюсь сделать следующее:

password = "user's password here"
Try_command_here:
    echo $password | sudo -S apt-get -y purge some-package-here
Except_command_here:
    Re-obtain_user_password

После повторного получения пароля он будет зацикливаться, чтобы можно было повторить попытку. При необходимости он сделает это 3 раза, и, если к тому времени не будет введен правильный пароль, отобразит окно с ошибкой и завершит работу.

Я знаю, что в Python команда для этого просто try:, а затем except:

Это так для оболочки или что-то другое?

Спасибо!!

РЕДАКТИРОВАТЬ

Я нацелен на оболочку bash.

Вывод echo $SHELL ===> /bin/bash

На какую оболочку вы в частности нацеливаетесь? Можете показать, что кидает echo $SHELL?

Inian 01.05.2018 17:34

Чтобы узнать, завершилась ли команда / программа неудачной или успешной, вы можете использовать ее статус выхода.

Ronan Boiteau 01.05.2018 17:38

@Inian, я добавил запрошенную вами информацию.

Batcastle 01.05.2018 17:58

Кстати, echo $password глючит. Всегда используйте кавычки: echo "$password" - иначе, если в пароле будет *, окруженный пробелами, он будет заменен списком имён файлов; также возможны различные другие нежелательные замены (несколько пробелов свернуты до одного, конечные пробелы удалены, выражения скобок проанализированы как глобусы и т. д.). Это тоже BashPitfalls # 14.

Charles Duffy 01.05.2018 17:58

Я не думал об этом. Спасибо, @CharlesDuffy!

Batcastle 01.05.2018 17:59

@Inian, кстати, повторяющийся вопрос или нет, я подумал, что ваш ответ был здесь полезен, поскольку он адаптирован к тому, что делает OP, и, таким образом, дает конкретное руководство о том, как лучше всего применить обобщенный ответ, указанный в связанном дубликате. Если вы не хотите, чтобы репутация отвечала на обман, я бы подумал о том, чтобы пометить его как вики-сообщество, а не удалять, но там достаточно добавленной стоимости, и мое личное суждение состоит в том, что я не считаю это обязательно требуется в данных обстоятельствах.

Charles Duffy 01.05.2018 19:39

... разрешено, возражение @ user464502 имеет значение (и хотя бы один ответ в связанном вопросе явно охватывает случай повторного запроса пароля), но это выходит за рамки непосредственного фокуса вопроса (фактически, «как мы обнаруживаем и выполняем ответвления на сбои в логика оболочки? ") в поисках указаний по различению отказов sudo от отказов apt-get, что, возможно, могло бы / должно быть отдельным вопросом сам по себе.

Charles Duffy 01.05.2018 19:42
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
43
0

Другие вопросы по теме