Necesito una pausa en un script de shell para mostrar una advertencia antes de continuar. Por ejemplo, en DOS es así:
doit.bat:
[...]
echo 'Are you sure? Press Ctrl-C to abort, enter to continue.'
pause
[...]
¿Cómo puedo hacer esto en bash? Por el momento, un comando de suspensión parece hacer el truco y es lo suficientemente simple, pero no es exactamente la idea:
doit.sh
[...]
echo 'Are you sure? Press Ctrl-C to abort.'
sleep 3
[...]

Respuestas:
algo en la línea de
fuente
read -p "prompt". Se pueden recuperar más detalles sobre las funciones integradas de shell con elhelpcomando, por ejemplohelp read.echo -nyprintf. Si presiona Enter, obtendrá una nueva línea.bashno hay ningún requisito de que leer tenga un argumento. El usosh(que a menudo invocabashenshmodo compatible)readrequiere un argumento. Si comienza su secuencia de comandos#!/bin/shverá el último comportamientoread -p "Press any key to continue or CTRL-C to abort"funciona bien bajo 14.04 en mis scripts. Como @Lekensteyn declaró en el comentario anterior, parece que este ha sido el caso desde el 12.04.4. La página de 'ayuda para leer' dice:fuente
Mi uso favorito de esto es establecer un tiempo de espera predeterminado, para que el script también pueda ejecutarse desatendido:
dónde:
-n1le dice a la lectura que acepte cualquier carácter individual-t5le dice que espere un máximo de 5 segundos para la entradaTrabajo casi exclusivamente con Bash en CentOS, por lo que no puedo garantizar que esto funcione en otras variantes de Linux, pero como es Bash, esperaría que funcione. ¡Me encantaría saber con certeza si es así! :)
fuente
La simple espera para detener el script es llamar
kill -STOP $$desde el script: después de una pausa, el script continuará su trabajo después de recibir la señal -CONT.fuente
CONTseñal al guión?coloque estas 3 líneas en un archivo .sh y ejecútelo
fuente
echono se muestra la salida del último comando y qué tiene que ver con la velocidad de la computadora?