Co je to `bash -x`

Kolega mi nedávno představil bash -x pro ladění mých bash skriptů bez převzetí echo $foo trasy.

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

Interně – jak toho dosahuje bash? Zkontroloval jsem man bash a při vyvolání tlumočníka (nezdálo se mi to) zmínil příznak -x. Hledám hlavně přehled toho, co bude a nebude laděno v -x prostředí nebo v jakémkoli jiném systému.

Odpovědět

-x je stejné jako nastavení xtrace pomocí -o možnost bash. Z mé kopie stránky bash:

Po rozšíření každého jednoduchého příkazu , pro příkaz , případ , vyberte příkaz nebo aritmetický pro příkaz, zobrazí rozšířenou hodnotu PS4 , následovanou příkazem a jeho rozšířeným argumenem ts nebo seznam přidružených slov.

Nemyslím si, že s tím existuje mnoho „gotchas“: vytiskne každý spuštěný příkaz. Předpokládám, že pokud analyzujete výstup stderr ze skriptu prostředí, může to pokazit, protože příkazy jsou vytištěny na stderr (aka deskriptor souboru 2), ale zdá se to jako extrémní případ.

(Můžete to také podmíněně povolit uvnitř skriptů nebo v interaktivních relacích prostředí s set -x to zapněte jej a set +x znovu vypněte.)

Komentáře

  • Oof. Děkuji . set help právě říká -x Print commands and their arguments as they are executed.. Nelze najít ' nic o tom, jak zrušit to v aktuálním prostředí.
  • @sherrellbc: set help nastaví poziční parametry na slovo help a ' nevytvoří nic. help set dává pro každou možnost, včetně toho, který zobrazíte pro -x v mé (starší) verzi a v t na konci tohoto seznamu je uvedeno Using + rather than - causes these flags to be turned off.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *