scripts script programas programacion pasar parametros español ejemplos ejecutar comandos comando bash

programas - scripts bash ejemplos



Bash: ¿Imprime cada comando antes de ejecutar? (4)

Esta pregunta ya tiene una respuesta aquí:

¿Cuál es la mejor manera de configurar un script bash que imprime cada comando antes de ejecutarlo?

Eso sería genial para propósitos de depuración.

Ya probé esto:

CMD="./my-command --params >stdout.txt 2>stderr.txt" echo $CMD `$CMD`

Lo que se supone que debe hacer es imprimir esto primero:

./my-command --params >stdout.txt 2>stderr.txt

y luego ejecute ./my-command --params , con la salida redirigida a los archivos especificados.


La forma más fácil de hacer esto es dejar que bash haga:

set -x

O ejecútelo explícitamente como bash -x myscript .


set -x está bien, pero si haces algo como:

set -x; command; set +x;

resultaría en la impresión

+ command + set +x;

Puede usar una subshell para evitar eso, como:

(set -x; command)

que simplemente imprimiría el comando.


set -x está bien.

Otra forma de imprimir cada comando ejecutado es usar trap con DEBUG . Pon esta línea al comienzo de tu script:

trap ''echo "# $BASH_COMMAND"'' DEBUG

Puede encontrar muchos otros usos de trap here .


set -o xtrace

o

bash -x myscript.sh

Esto también funciona con estándar / bin / sh IIRC (podría ser una cosa de POSIX)

Y recuerde, hay bashdb ( bash Shell Debugger, release 4.0-0.4 )

Para volver a la normalidad, salga de la subshell o

set +o xtrace