Mi az a `bash -x`

Egy kollégám nemrég bemutatott nekem bash -x, hogy hibakeresés nélkül bash szkriptjeimet az echo $foo útvonal.

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

Belsőleg – hogyan teljesíti ezt a bash? Megnéztem a (z) man bash elemet, és (nem tűnt?) Megemlíti a -x jelzőt a tolmács meghívásakor. Főleg a áttekintés arról, hogy mi lesz és nem fog hibakeresni a -x környezetben, vagy bármilyen más probléma.

Válasz

-x megegyezik a xtrace beállítással a -o opció a bash-ra. A bash oldal másolatából:

Az egyes egyszerű parancsok kibontása után a parancshoz, eset parancshoz, select parancs, vagy a

paranccsal jelenítse meg a PS4 kibővített értékét , majd a parancs és a kibővített argumen ts vagy a hozzájuk tartozó szavak listája.

Nem hiszem, hogy sok „gotcha” van ezzel: minden egyes parancsot kinyomtat, amelyet végrehajt. Gondolom, ha a stderr kimenetet elemezed a shell szkriptből, az ezt elronthatja, mert a parancsokat stderr (más néven fájlleíró 2), de ez szélsőséges esetnek tűnik.

(Ezt feltételesen engedélyezheti a parancsfájlok belsejében vagy interaktív shell-munkamenetekben is a set -x kapcsolja be, és set +x hogy ismét kikapcsolja.)

Megjegyzések

  • Oof. Köszönöm . set help csak azt mondja, hogy -x Print commands and their arguments as they are executed.. Nem tudtam ' semmit találni a állítsa be hogy az aktuális héjban.
  • @sherrellbc: set help a pozíció paramétereit a help és nem ' nem ad ki semmit. help set minden opcióhoz ad egy-egy sort, beleértve azt is, amelyet a -x az én (régebbi) verziómban, és a t-nél a lista végén azt mondja, hogy Using + rather than - causes these flags to be turned off.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük