Ce este `bash -x`

Un coleg mi-a prezentat recent bash -x pentru depanarea scripturilor mele bash fără a lua ruta echo $foo.

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

Pe plan intern – cum realizează acest lucru bash-ul? Am bifat man bash și (nu s-a părut?) Menționează steagul -x la apelarea interpretului. În principal caut o prezentare generală a ceea ce va și ce nu va fi depanat în -x mediul înconjurător sau în orice alte probleme.

Răspuns

-x este la fel ca setarea xtrace cu -o opțiune pentru bash. Din copia mea a paginii de manual bash:

După extinderea fiecărei comenzi simple , pentru comanda , caz selectați comanda sau aritmetică pentru comandă, afișați valoarea extinsă a PS4 , urmată de comandă și argumenul său extins ts sau lista de cuvinte asociate.

Nu cred că există multe „gotchas” cu aceasta: imprimă fiecare comandă pe care o execută. Presupun că dacă „analizați stderr ieșirea din scriptul shell, acest lucru poate deranja acest lucru, deoarece comenzile sunt tipărite în stderr (alias descriptorul de fișiere 2), dar acesta pare a fi un caz extrem.

(Puteți, de asemenea, să activați condiționat acest lucru în scripturi sau în sesiuni de shell interactive cu set -x la porniți-l și set +x pentru al opri din nou.)

Comentarii

  • Oof. Vă mulțumim . set help spune doar -x Print commands and their arguments as they are executed.. Nu am putut ' să nu găsesc nimic despre cum să anulați că în shell-ul curent.
  • @sherrellbc: set help setează parametrii poziționali la cuvântul help și ' nu produce nimic. help set oferă o linie sau cam așa pentru fiecare opțiune, inclusiv cea pe care o afișați pentru -x în versiunea mea (mai veche) și la t sfârșitul acestei liste spune Using + rather than - causes these flags to be turned off.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *