Мне нужна пауза в сценарии оболочки, чтобы вывести предупреждение перед продолжением. Например, в DOS это выглядит так:
doit.bat:
[...]
echo 'Are you sure? Press Ctrl-C to abort, enter to continue.'
pause
[...]
Как я могу сделать это на Bash? На данный момент команда сна, кажется, делает свое дело и достаточно проста, но не совсем идея:
doit.sh
[...]
echo 'Are you sure? Press Ctrl-C to abort.'
sleep 3
[...]
Ответы:
что-то вроде
источник
read -p "prompt"
. Более подробную информацию о встроенных модулях оболочки можно получить с помощьюhelp
команды, напримерhelp read
.echo -n
иprintf
. Если вы нажмете Enter, вы получите новую строку.bash
не требуется, чтобы read имела аргумент. Использованиеsh
(которое часто вызываетсяbash
вsh
совместимом режиме)read
требует аргумента. Если вы начнете свой сценарий с,#!/bin/sh
вы увидите последнее поведениеread -p "Press any key to continue or CTRL-C to abort"
отлично работает под 14.04 в моих скриптах. Как сказал @Lekensteyn в комментарии выше, похоже, что это имело место с 12.04.4. Страница 'help read' гласит:источник
Мое любимое использование этого - установить тайм-аут по умолчанию, чтобы скрипт мог запускаться без присмотра:
где:
-n1
говорит прочитанному принять любой отдельный символ-t5
говорит ему ждать максимум 5 секунд для вводаЯ работаю почти исключительно с Bash под CentOS, поэтому я не могу поручиться за эту работу над другими вариантами Linux, но, поскольку это Bash, я бы ожидал, что это сработает. Я хотел бы знать наверняка, если это так! :)
источник
Простое ожидание остановки сценария - вызов
kill -STOP $$
из сценария: после приостановки сценарий продолжит свою работу после получения сигнала -CONT.источник
CONT
сигнал сценарию?поместите эти 3 строки в файл .sh и запустите его
источник
echo
команды не отображаются и какое отношение это имеет к скорости компьютера?