Vad är `bash -x`

En kollega introducerade mig nyligen till bash -x för att felsöka mina bash-skript utan att ta rutten echo $foo.

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

Internt – hur gör bash detta? Jag kollade på man bash och det (verkade inte tycka?) Nämnde -x -flaggan när jag åberopade tolken. Jag letar främst efter en översikt över vad som inte kommer att felsökas i -x -miljön eller andra gotchas.

Svar

-x är samma sak som att ställa in xtrace med -o option to bash. Från min kopia av bash-manpage:

Efter att ha utvidgat varje enkelt kommando , för kommando, fall kommando, välj kommando eller aritmetik för -kommando, visa det utökade värdet för PS4 , följt av kommandot och dess utökade argumen ts eller tillhörande ordlista.

Jag tror inte att det finns många ”gotchas” med detta: det skriver ut varje kommando det körs. Jag antar att om du ”tolkar stderr från shell-skriptet, kan detta förstöra det, eftersom kommandona skrivs ut till stderr (aka filbeskrivare 2), men det verkar som ett extremt fall.

(Du kan också villkorligt aktivera detta i skript eller i interaktiva skalsessioner med set -x till slå på den och set +x för att stänga av den igen.)

Kommentarer

  • Oof. Tack . set help säger bara -x Print commands and their arguments as they are executed.. Jag kunde inte ' inte hitta något om hur jag avmarkera det i det aktuella skalet.
  • @sherrellbc: set help ställer in positionsparametrarna till ordet help och ' t matar ut något. help set ger en rad eller så för varje alternativ, inklusive den du visar för -x i min (äldre) version och vid t slutet på listan säger Using + rather than - causes these flags to be turned off.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *