kennt jemand eine Möglichkeit das man angezeigt bekommt was der Reihe nach passiert wenn die bash Tokens die man in der command line eingibt auswertet.
Warum:
konkret geht es mir um das Thema bash expansion mit folgendem Beispiel
Code: Alles auswählen
prog="`basename \"$0\"`"
Klammern Expansion
Tilde Expansion
Parameter bzw. Variabel Expansion
Arithmetrische Expansion
Kommando Substitution
Word Zerlegung
Datei Expansion
Entfernen der Quotes
Während der Schritte Parameter bis Kommando Substitution kann noch Prozess Substitution erfolgen.
So tivial der obige Ausdruck auch aussieht ich kann ihn nicht zu 100% nachvollziehen - ich versuche es einmal. Jemand der den Fehler sieht bitte Meldung machen.
Start:
Variable Expansion von $0
prog="`basename \"$0\"`"
wird zu
prog="`basename \"bash\"`"
der Backslash escaped das double qoute d.h. die double qoutes verlieren ihre Bedeutung und sind nur mehr normale Zeichen
prog="`basename \"bash\"`"
es folgt ein qoute removal welches die backslashes wegräumt
prog="`basename \"bash\"`"
wird zu
prog="`basename "bash"`"
jetzt erfolgt die Kommando Substitution
prog="`basename "bash"`"
wird hier zu
prog=""bash""
Was passiert dann? wieder ein qoute removal der alle vorhandenen qoutes wegräumt d.h. aus
prog=""bash""
wird
prog=bash was bedeutet das in der Variable prog der String bash steht.
Praxistest:
Wenn man es in der bash aufruft sieht es so aus:
Code: Alles auswählen
max@pc1:~$ var="`basename \"$0\"`";echo $var
bash
max@pc1:~$
Code: Alles auswählen
max@pc1:~$ var=`basename $0`;echo $var
bash
max@pc1:~$
Code: Alles auswählen
max@pc1:~$ var="`basename $0`";echo $var
bash
max@pc1:~$
2) gibt es eine möglichkeit mir Schritt für Schritt das alles anzeigen zu lassen - evtl. sowas wie man es von Debbugern beim programmieren kennt
TIA markus