Tengo un script de shell con la siguiente línea:
[ "$DEBUG" == 'true' ] && set -x-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 ++).
Compara 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 $NOSETEn lugar de dar set -x y set +x , podemos ejecutar el script usando -x Ejemplo : ksh -x script_name.ksh Corríjame o mejore mis conocimientos si me equivoco
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 de la secuencia de comandos si no funciona como se esperaba.
set +x lo deshabilita.
set -xImprime 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 ]
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 como una sola línea ha sido evaluada paso a paso.
expr primer paso.echo segundo paso.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 seleccionado como DEBUG . Tradicionalmente, las personas solían habilitar el modo de depuración cuando un script llamaba con un argumento opcional como -d