Каков эквивалент bash команды паузы DOS?

Измените свой сценарий так:

#!/bin/bash
export PATH="/usr/games:$PATH"
fortune | cowsay

«fortune» и «cowsay» считаются играми ubuntu, и они не находятся в системном пути по умолчанию.

13
задан 27 February 2012 в 23:00

5 ответов

что-то вдоль линий

echo -n "prompt"  #'-n' means do not add \n to end of string
read              # No arg means dump next line of input
10
ответ дан 25 May 2018 в 13:53
  • 1
    В Bash это можно сократить до read -p "prompt". Более подробную информацию о встроенных оболочках оболочки можно получить с помощью команды help, например. [F3]. – Lekensteyn 27 February 2012 в 23:32
  • 2
    @Lekensteyn - Это без конечной новой строки. – Matt H 16 March 2012 в 00:36
  • 3
    @MattH Так же, как echo -n и printf. Если вы нажмете Enter, вы получите новую строку. – Lekensteyn 16 March 2012 в 01:54
  • 4
    это не работает для ubuntu 12.04 - чтение требует аргументов – ses 15 May 2014 в 01:09
  • 5
    @ses 12.04.4 при использовании bash нет требования, чтобы чтение имело аргумент. Используя sh (который часто вызывает bash в совместимом режиме sh), read требует аргумента. Если вы начнете свой скрипт с #!/bin/sh, вы увидите последнее поведение – Huckle 15 May 2014 в 06:33

read -p "Press any key to continue or CTRL-C to abort" работает отлично под 14.04 в моих сценариях. Как указано в комментарии LLekensteyn в комментарии выше, похоже, что это имело место с 12.04.4. На странице «help read»:

-p prompt   output the string PROMPT without a trailing newline before
            attempting to read
2
ответ дан 25 May 2018 в 13:53

Мое любимое использование этого - установить тайм-аут по умолчанию, так что скрипт также может запускаться без присмотра:

echo "Press any key to continue..."
read -n1 -t5 any_key

где:

-n1 сообщает, что чтение принять какой-либо один символ -t5 говорит ему ждать максимум 5 секунд для ввода

Я работаю почти исключительно с Bash под CentOS, поэтому я не могу поручиться за это, работая над другими вариантами Linux, но поскольку это Баш, я бы ожидал, что он сработает. Мне бы хотелось знать наверняка, если это так! :

)
1
ответ дан 25 May 2018 в 13:53

Символы ждут, чтобы остановить сценарий, чтобы вызвать kill -STOP $$ из сценария: после паузы скрипт продолжит работу после приема сигнала -CONT.

#!/bin/bash
echo "$0 stopping now"
kill -STOP $$
echo "$0 continues its work"
0
ответ дан 25 May 2018 в 13:53
echo "press enter to continue"
read unusedVariable
echo "running these 3 lines in .sh file, this echo will never be seen, unless you have a really slow computer"

поместите эти 3 строки в файл .sh и запустите его

-2
ответ дан 25 May 2018 в 13:53
  • 1
    -1 Что это должно делать и почему? Почему вывод последней команды echo не отображается и что он должен делать со скоростью компьютера? – David Foerster 31 December 2015 в 16:02

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

Похожие вопросы: