¿Qué es `bash -x`

Un colega me presentó recientemente bash -x para depurar mis scripts bash sin tomar la ruta echo $foo.

$ bash -x hello-world.sh + echo "Hello World" Hello World 

Internamente, ¿cómo logra bash esto? Revisé man bash y (¿no parecía?) Mencionaba la marca -x al invocar al intérprete. Estoy buscando principalmente una descripción general de lo que se depurará y no se depurará en el -x entorno, o cualquier otro error.

Respuesta

-x es lo mismo que configurar xtrace con -o para bash. De mi copia de la página de manual de bash:

Después de expandir cada comando simple , para comando, case comando, seleccione el comando o aritmética para comando, muestra el valor expandido de PS4 , seguido del comando y su argumento expandido ts o lista de palabras asociadas.

No creo que haya muchos «errores» con esto: imprime cada comando que ejecuta. Supongo que si «estás analizando la stderr salida del script de shell, esto puede estropearlo, porque los comandos se imprimen en stderr (también conocido como descriptor de archivo 2), pero eso parece un caso extremo.

(También puede habilitarlo condicionalmente dentro de scripts o en sesiones de shell interactivas con set -x para enciéndalo y set +x para apagarlo nuevamente.)

Comentarios

  • Oof. Gracias . set help solo dice -x Print commands and their arguments as they are executed.. No pude ' encontrar algo sobre cómo desarmar eso en el shell actual.
  • @sherrellbc: set help establece los parámetros posicionales en la palabra help y no ' t genera nada. help set da una línea más o menos para cada opción, incluida la que muestra para -x en mi versión (anterior) y en t El final de esa lista dice Using + rather than - causes these flags to be turned off.

Deja una respuesta

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