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 helpsanoo 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 helpasettaa sijaintiparametrit sanallehelpja ei ' t anna mitään.help setantaa 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.