Hvad er `bash -x`

En kollega introducerede mig for nylig til bash -x til debugging af mine bash-scripts uden at tage ruten echo $foo.

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

Internt – hvordan opnår bash dette? Jeg tjekket man bash og det (syntes ikke at være?) Nævner -x -flagget, når jeg påkalder tolken. Jeg leder primært efter en oversigt over, hvad der vil og ikke vil blive debugeret i -x miljøet eller andre gotchas.

Svar

-x er det samme som at indstille xtrace med -o mulighed for at bash. Fra min kopi af bash manpage:

Efter udvidelse af hver enkel kommando , til kommando, sag kommando, vælg kommando eller aritmetik til kommando, vis den udvidede værdi af PS4 efterfulgt af kommandoen og dens udvidede argumen ts eller tilknyttet ordliste.

Jeg tror ikke, der er mange “gotchas” med dette: den udskriver hver kommando, den udfører. Jeg formoder, at hvis du “parser stderr output fra shell-scriptet, kan dette ødelægge det, fordi kommandoerne udskrives til stderr (aka filbeskrivelse 2), men det virker som et ekstremt tilfælde.

(Du kan også betinget aktivere dette i scripts eller i interaktive shell-sessioner med set -x til slå den til og set +x for at slå den fra igen.)

Kommentarer

  • Oof. Tak . set help siger bare -x Print commands and their arguments as they are executed.. Jeg kunne ikke ' ikke finde noget om, hvordan jeg frakoblet det i den aktuelle shell.
  • @sherrellbc: set help indstiller positionsparametrene til ordet help og ' t output noget. help set giver en linje eller deromkring for hver mulighed, inklusive den, du viser til -x i min (ældre) version og ved t slutningen af denne liste siger Using + rather than - causes these flags to be turned off.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *