* dkroemer@t-online.de schrieb am 10.Mär.2003:
mich treiben die Hochkommas noch in den Wahnsinn ;-)
Wo kann ich nachlesen, wann ich welche verwenden kann, bzw. muss?
' und " Quotieren alles was dazwichen steht. Das heißt die bash, von der reden wir hier wohl, nimmt alles als ein einzelnes Argument. Normalerweise nimmt die bash bei einem Befehl cmd foo bar foo als ein Argument und bar als das nächste. Genauer: die bash ruft den Befehl cmd auf und übergibt cmd die Argumente cmd foo und bar. Als erstes Argument wird immer der Befehlname selber übergeben. Bei der UNIX Zählung ist es das Argument 0. foo wäre in diesem Beispiel das Argument 1 und bar das Argument 2 Wenn nun stattdessen cmd "foo bar" aufgerufen wird, so wird foo bar als einzelnes Argument aufgefaßt, mit Leerzeichen dazwichen. `..` hingegen macht was ganz anderes. Hier wird alles, was zwichen den beiden ` steht als Befehl genommen, der ausgeführt wird. Dies wird dann alles inclusive der ` selber durch die Standardausgabe dieses Befehls ersetzt Um den Unterschied zwichen ' und " zu erkennen schreibst Du Dir am Besten ein kleines Progrämmchen. Ich habe es mal arg genannt: === arg ============================================= #!/bin/bash j=1 for i do echo "ARG$j: $i" j=$((j+1)) done ===================================================== Hiermit werden die Argumente angezeigt: $ arg foo bar baz ARG1: foo ARG2: bar ARG3: baz $ $ arg "foo bar" baz ARG1: foo bar ARG2: baz $ $ arg 'foo bar' baz ARG1: foo bar ARG2: baz $ $ arg "foo $SHELL bar" baz ARG1: foo /bin/bash bar ARG2: baz $ $ arg 'foo $SHELL bar' baz ARG1: foo $SHELL bar ARG2: baz Man beachte hier den Unterschied: Innerhalb von "..." werden Variablen weiter interpretiert, innerhalb von '...' werden Variablen nicht interpretiert, sie werden so genommen, wie sie da stehen. $ arg foo `date` bar ARG1: foo ARG2: Mon ARG3: Mär ARG4: 10 ARG5: 11:34:27 ARG6: CET ARG7: 2003 ARG8: bar $ $ arg "foo `date`" bar ARG1: foo Mon Mär 10 11:35:54 CET 2003 ARG2: bar $ $ arg 'foo `date`' bar ARG1: foo `date` ARG2: bar Auch hier wird bei "..." die `...` interpretiert, bei '...' hingegen wird `...` so übernommen, wie es ist. Ähnliches übrigens, wenn ein * oder ? auftaucht, die von der bash ja auch interpretiert werden. Probier es mal selber aus. Spiel auch mal mit dem \ Backslash. $ arg "foo 'bar baz'" ARG1: foo 'bar baz' $ $ arg 'foo "bar baz"' ARG!: foo "bar baz"' Sowohl innerhalb von '...' also auch von "..." wird das jeweilig andere Zeichen einfach so wie es da steht weitergegeben, an den Befehl, der aufgerufen wird. Was der damit macht, ist seine Sache. Viele Befehle interpretieren diese Zeichen ähnlich wie die shell, aber längst nicht alle. Es ist wichitg, den Erstetzungsmechanismus der shell zu verstehen. So zum Beispiel, ersetzt die Shell den * mit allen passenden Dateinamen. Das eigentliche Programm bekommt den *, wenn er nicht gequotet wurde, nicht zu Gesicht. Die $ oben am Zeilenanfang stellt den Promt dar, bitte nicht mit eingeben. Bernd -- Was ist quoten? Quoten ist das Zitieren aus einer mail, der man antwortet. Und wie macht man es richtig? Zitate werden mit "> " gekennzeichnet. Nicht mehr als nötig zitieren. Vor den Abschnitten das Zitat, auf das man sich bezieht, mit einer Zeile Abstand oben und unten. |Zufallssignatur 12