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.)
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.set help
a pozíció paramétereit ahelp
é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, hogyUsing + rather than - causes these flags to be turned off.