Cosè `bash -x`

Un collega mi ha recentemente presentato a bash -x per eseguire il debug dei miei script bash senza prendere il percorso echo $foo.

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

Internamente: come fa bash a farlo? Ho controllato man bash e (non sembrava?) Menzionava il flag -x quando ho richiamato linterprete. Sto cercando principalmente una panoramica di ciò che verrà e cosa non verrà sottoposto a debug nellambiente -x o in qualsiasi altro trucco.

Risposta

-x equivale a impostare xtrace con -o per bash. Dalla mia copia della manpage di bash:

Dopo aver espanso ogni comando semplice , per il comando , case , seleziona comando o aritmetica per , visualizza il valore espanso di PS4 , seguito dal comando e dal suo argomento espanso ts o elenco di parole associate.

Non credo che ci siano molti “trucchi” con questo: stampa ogni comando che esegue. Suppongo che se “stai analizzando loutput stderr dallo script della shell, questo può rovinare tutto, perché i comandi vengono stampati su stderr (noto anche come descrittore di file 2), ma sembra un caso estremo.

(Puoi anche abilitarlo in modo condizionale allinterno di script o in sessioni di shell interattive con set -x per accenderlo e set +x per spegnerlo di nuovo.)

Commenti

  • Oof. Grazie . set help dice solo -x Print commands and their arguments as they are executed.. Non sono riuscito ' a trovare qualcosa su come deseleziona quello nella shell corrente.
  • @sherrellbc: set help imposta i parametri posizionali sulla parola help e ' t restituisce qualcosa. help set fornisce una riga o giù di lì per ciascuna opzione, inclusa quella mostrata per -x nella mia versione (precedente) e in t La fine di tale elenco dice Using + rather than - causes these flags to be turned off.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *