Hva er `bash -x`

En kollega introduserte meg nylig for bash -x for å feilsøke bash-skriptene mine uten å ta echo $foo ruten.

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

Internt – hvordan oppnår bash dette? Jeg sjekket man bash og det (virket ikke som?) Nevnte -x -flagget da jeg påkalte tolk. Jeg leter hovedsakelig etter en oversikt over hva som ikke vil bli feilsøkt i -x miljøet eller andre gotchas.

Svar

-x er det samme som å sette xtrace med -o alternativ å bash. Fra kopien av bash-manpage:

Etter å ha utvidet hver enkle kommando , for kommando, sak kommando, velg kommando, eller aritmetisk for kommando, vis den utvidede verdien til PS4 , etterfulgt av kommandoen og dens utvidede argumen ts eller tilhørende ordliste.

Jeg tror ikke det er mange «gotchas» med dette: den skriver ut hver kommando den utfører. Jeg antar at hvis du parser stderr -utgangen fra skallskriptet, kan dette ødelegge det, fordi kommandoene skrives ut til stderr (aka filbeskrivelse 2), men det virker som et ekstremt tilfelle.

(Du kan også betinget aktivere dette i skript eller i interaktive shell-økter med set -x til slå den på og set +x for å slå den av igjen.)

Kommentarer

  • Oof. Takk . set help sier bare -x Print commands and their arguments as they are executed.. Jeg kunne ikke ' t å finne noe om hvordan jeg unset at in the current shell.
  • @sherrellbc: set help setter posisjonsparametrene til ordet help og ' gir ikke ut noe. help set gir en linje eller så for hvert alternativ, inkludert den du viser for -x i min (eldre) versjon, og ved t slutten av listen sier Using + rather than - causes these flags to be turned off.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *