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 helpcsak 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 helpa pozíció paramétereit ahelpés nem ' nem ad ki semmit.help setminden opcióhoz ad egy-egy sort, beleértve azt is, amelyet a-xaz é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.