Пример диалога yes/no на Python, который можно использовать в скриптах.
Похожая функция на bash
– есть в статье BASH: использование функций, примеры.
Пример писался на:
# python --version Python 2.7.6
Оригинал был взял из книги Г.Россум, Ф.Л.Дж.Дрейк, Д.С.Откидач – Язык программирования Python.
Код:
$ cat yesno.py #!/usr/bin/env python import sys # задаём функцию выхода, первым аргументом будем передавать сообщение при выходе def exit(exit_message): print exit_message sys.exit(0) '''Собственно - функция диалога. Первым аргументом принимаем ответ пользователя, вторым - выдаём сообщение при неверном вводе''' def answer(prompt, choice='Yes or no, please!'): while True: result = raw_input(prompt) if result in ('y', 'Y', 'yes', 'Yes'): print 'nAs you choice "YES" - exiting now.n' '''тут можно использовать оператор break вместо return так же и в ответе No''' return False elif result in ('n', 'N', 'no', 'No'): print 'nAs your choice "NO" - I'll stay here...n' a = 1 '''тут просто цикл для демонстрации использования оператора else в циклах''' while a < 10: print 'I'm number ' + str(a) + ' :-)' a = a + 1 else: exit('nExiting.n') else: print(choice) ''' используем операторы try и except, что бы корректно и красиво завершить скрипт при Ctrl+C (KeyboardInterrupt - SIGINT) или Ctrl+D (EOFError - SIGQUIT) командах ''' try: answer('nAre you sure to quite? ('y' or 'n', Ctrl+C for exit) ') except (KeyboardInterrupt, EOFError): exit('nnExiting.n') finally: print 'Tha's all folks.n'
Результаты работы:
# ./yesno.py Are you sure to quite? ('y' or 'n', Ctrl+C for exit) O Yes or no, please! Are you sure to quite? ('y' or 'n', Ctrl+C for exit) y As you choice "YES" - exiting now. Tha's all folks.
# ./yesno.py Are you sure to quite? ('y' or 'n', Ctrl+C for exit) n As your choice "NO" - I'll stay here... I'm number 1 :-) I'm number 2 :-) I'm number 3 :-) I'm number 4 :-) I'm number 5 :-) I'm number 6 :-) I'm number 7 :-) I'm number 8 :-) I'm number 9 :-) Exiting. Tha's all folks.