Hallo, Am Mon, 15 Okt 2007, Jens Nixdorf schrieb:
Soweit so gut. Jetzt muss ich aber Befehlszeilen aus einem Script in ein anderes schreiben, und da stehe ich vor ein paar Problemen. Will ich zum Beispiel die folgende Zeile übertragen:
STATUS=`ls -al "$FILENAME" | awk '{print $5}'`
wird daraus nach dem echo-Befehl folgende Zeile:
STATUS=`ls -al "$FILENAME" | awk {print }`
Klar. Fehlendes Quoting/Escapen. Neben der von Andreas vorgeschlagenen Lösung gibt es noch folgende, die v.a. bei mehreren Zeilen hilfreich ist: cat <<'EOF' >> datei STATUS=`ls -al "$FILENAME" | awk '{print $5}'` EOF Wichtig dabei sind die '' um das "EOF", die sagen der Bash, daß sie im folgenden Here-Dokument[1] nichts expandieren soll. Wenn du innerhalb des Here-Dokuments etwas ersetzt haben willst, dann mußt du die '' weglassen, allerdings auch die Dinge schützen, die die bash nicht expandieren soll (auch die ``). Wenn du also z.B. $FILENAME ersetzt haben willst: FILENAME="foo.txt" cat <<EOF >> datei STATUS=\`ls -al "$FILENAME" | awk '{print \$5}'\` EOF Achso, das "EOF" ist nur ne Konvention. HTH, -dnh [1] siehe man bash -> "Here Documents" zu den Details -- "Wirklich praxisnah wären Münzen zu EUR 0,99." -- Wolfgang Schwanke in de.etc.sprache.deutsch -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org