Eräs kollegani esitteli minulle äskettäin bash -x
-ominaisuuden bash-komentosarjani virheenkorjaamiseksi ottamatta reitti echo $foo
.
$ bash -x hello-world.sh + echo "Hello World" Hello World
Sisäisesti – miten bash saavuttaa tämän? Tarkistin man bash
ja siinä (ei näyttänyt siltä?) Mainitaan -x
-lippu tulkkia kutsuttaessa. Etsin pääasiassa yleiskatsaus siitä, mitä ja mitä ei korjata virheenkorjaukseen -x
-ympäristössä tai muissa hakemistoissa.
Vastaa
-x
on sama kuin asetus xtrace
parametrilla -o
-vaihtoehto bashiin. Bash-sivun kopiosta:
Laajennettuasi jokaisen yksinkertaisen komennon , komennolle , tapaus -komennolle, valitse komento tai aritmeettinen kohteelle -komennolla, näytä PS4: n laajennettu arvo , jota seuraa komento ja sen laajennettu argumen ts tai siihen liittyvä sanaluettelo.
En usko, että tämän kanssa on paljon ”gotchoja”: se tulostaa jokaisen komennon, jonka se suorittaa. Oletan, että jos jäsennät uudelleen stderr
-tulostusta komentosarjakomentosarjalta, tämä voi häiritä sitä, koska komennot tulostetaan stderr
(alias tiedostokuvaaja 2), mutta se tuntuu äärimmäiseltä tapaukselta.
(Voit ottaa tämän myös ehdollisesti käyttöön komentosarjoissa tai vuorovaikutteisissa shell-istunnoissa set -x
käynnistä se ja set +x
sammuttaaksesi sen uudelleen.)
set help
sanoo vain-x Print commands and their arguments as they are executed.
. En voinut ' löytää mitään siitä, miten poista tämä nykyisessä kuoressa.set help
asettaa sijaintiparametrit sanallehelp
ja ei ' t anna mitään.help set
antaa yhden rivin kullekin vaihtoehdolle, mukaan lukien riville, jonka näytät kohteelle-x
(vanhemmassa) versiossa ja kohdassa t luettelon lopussa lukeeUsing + rather than - causes these flags to be turned off.