Saltar al contenido

¿Cómo ejecutar el script bash línea por línea?

Haz todo lo posible por comprender el código correctamente antes de adaptarlo a tu trabajo y si tdeseas aportar algo puedes dejarlo en los comentarios.

Solución:

No necesita poner una lectura en cada línea, solo agregue una trampa como la siguiente en su script bash, tiene el efecto que desea, por ejemplo.

#!/usr/bin/env bash
set -x
trap read debug

< YOUR CODE HERE >

Funciona, solo lo probé con bash v4.2.8 y v3.2.25.


VERSIÓN MEJORADA

Si su secuencia de comandos está leyendo contenido de archivos, la lista anterior no funcionará. Una solución alternativa podría parecerse al ejemplo siguiente.

#!/usr/bin/env bash
echo "Press CTRL+C to proceed."
trap "pkill -f 'sleep 1h'" INT
trap "set +x ; sleep 1h ; set -x" DEBUG

< YOUR CODE HERE >

Para detener el guion tendrías que mátalo desde otro caparazón en este caso.


ALTERNATIVA1

Si simplemente desea esperar unos segundos antes de continuar con el siguiente comando en su secuencia de comandos, el siguiente ejemplo podría funcionar para usted.

#!/usr/bin/env bash
trap "set +x; sleep 5; set -x" DEBUG

< YOUR CODE HERE >

Estoy agregando set + x y set -x dentro del comando trap para hacer que la salida sea más legible.

El proyecto del depurador de BASH es “un depurador de código fuente para bash que sigue la sintaxis del comando gdb”.

Si su script bash es realmente un grupo de comandos únicos que desea ejecutar uno por uno, puede hacer algo como esto, que ejecuta cada comando uno por uno cuando incrementa una variable LN, correspondiente al número de línea que desea ejecutar. Esto le permite ejecutar el último comando nuevamente de manera muy fácil, y luego simplemente incrementa la variable para ir al siguiente comando.

Suponiendo que sus comandos están en un archivo “it.sh”, ejecute lo siguiente, uno por uno.

$ cat it.sh
echo "hi there"
date
ls -la /etc/passwd

$ $(LN=1 && cat it.sh | head -n$LN | tail -n1)
"hi there"

$ $(LN=2 && cat it.sh | head -n$LN | tail -n1)
Wed Feb 28 10:58:52 AST 2018

$ $(LN=3 && cat it.sh | head -n$LN | tail -n1)
-rw-r--r-- 1 root wheel 6774 Oct 2 21:29 /etc/passwd

Ten en cuenta mostrar esta crónica si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *