set -x
Imprime un rastro de comandos simples, para comandos, comandos de mayúsculas y minúsculas, comandos de selección y aritmética para comandos y sus argumentos o listas de palabras asociadas después de expandirse y antes de ejecutarse. El valor de la variable PS4 se expande y el valor resultante se imprime antes del comando y sus argumentos expandidos.
[fuente]
Ejemplo
set -x
echo `expr 10 + 20 `
+ expr 10 + 20
+ echo 30
30
set +x
echo `expr 10 + 20 `
30
El ejemplo anterior ilustra el uso de set -x
. Cuando se utiliza, la expresión aritmética anterior se ha ampliado. Pudimos ver cómo una sola línea ha sido evaluada paso a paso.
- Primer paso
expr
ha sido evaluado. - Segundo paso
echo
ha sido evaluado.
Para saber más sobre set → visita este enlace
cuando se trata de su script de shell,
[ "$DEBUG" == 'true' ] && set -x
Su secuencia de comandos podría haber estado imprimiendo algunas líneas adicionales de información cuando el modo de ejecución se seleccionó como DEBUG
. Tradicionalmente, la gente solía habilitar el modo de depuración cuando un script llamaba con un argumento opcional como -d
-u:deshabilitado por defecto. Cuando está activado, se muestra un mensaje de error cuando se usa una variable no configurada.
-v:inactivo por defecto. Después de la activación, se mostrará el contenido original de la información (sin resolución variable) antes de que se emita la información.
-x:inactivo por defecto. Si está activado, el contenido del comando se mostrará antes de que se ejecute el comando (después de la resolución variable, hay un símbolo ++).
Compare las siguientes diferencias:
/ # set -v && echo $HOME
/root
/ # set +v && echo $HOME
set +v && echo $HOME
/root
/ # set -x && echo $HOME
+ echo /root
/root
/ # set +x && echo $HOME
+ set +x
/root
/ # set -u && echo $NOSET
/bin/sh: NOSET: parameter not set
/ # set +u && echo $NOSET
set -x
habilita un modo del shell donde todos los comandos ejecutados se imprimen en la terminal. En su caso, se usa claramente para la depuración, que es un caso de uso típico para set -x
:imprimir cada comando a medida que se ejecuta puede ayudarlo a visualizar el flujo de control del script si no funciona como se esperaba.
set +x
lo desactiva.