Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
smutbert
- Beiträge: 8342
- Registriert: 24.07.2011 13:27:39
- Wohnort: Graz
Beitrag
von smutbert » 23.01.2015 09:18:37
Hallo,
in einem kleinen Skript will ich einen Befehl in ein weiteres Skript schreiben, also etwa so
cat <<EOF > ${TARGET}/install.sh
#!/bin/sh
apt-get install $(cat packages.txt)
EOF
Mein Problem ist, dass das $(cat packages.txt) bereits vor dem Schreiben in das weitere Skript durch die Ausgabe des Befehls ersetzt wird. Wie ließe sich das verhindern?
Danke und lg,
smutbert
-
Meillo
- Moderator
- Beiträge: 9235
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 23.01.2015 09:40:40
Das Dollarzeichen escapen! (Mit einem Backslash, wie ueblich.)
Oder das ``EOF'' quoten:
Code: Alles auswählen
cat <<'EOF' > ${TARGET}/install.sh
#!/bin/sh
apt-get install $(cat packages.txt)
EOF
... dann wird das Here document wie Singlequotes (statt wie Doublequotes) behandelt.
Use ed once in a while!
-
smutbert
- Beiträge: 8342
- Registriert: 24.07.2011 13:27:39
- Wohnort: Graz
Beitrag
von smutbert » 23.01.2015 09:56:51
Zuletzt geändert von
smutbert am 23.01.2015 10:34:43, insgesamt 1-mal geändert.
-
Meillo
- Moderator
- Beiträge: 9235
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 23.01.2015 10:27:35
Ich hab natuerlich gerne geholfen.
... aber spare dir lieber das Verbeugen (das kann ich naemlich nicht leiden) und schaue stattdessen in die Manpage der bash. Wenn du nach ``here document'' suchst, dann findest du dort:
The format of here-documents is:
No parameter expansion, command substitution, arithmetic
expansion, or pathname expansion is performed on word. If
any characters in word are quoted, the delimiter is the
result of quote removal on word, and the lines in the here-
document are not expanded. If word is unquoted, all lines
of the here-document are subjected to parameter expansion,
command substitution, and arithmetic expansion. In the lat-
ter case, the character sequence \<newline> is ignored, and
\ must be used to quote the characters \, $, and `.
(Oder, falls du's gerne noch definitiver haettest, dann kannst du auch einen Blick in POSIX werfen:
http://pubs.opengroup.org/onlinepubs/96 ... g_18_07_04 )
Use ed once in a while!
-
smutbert
- Beiträge: 8342
- Registriert: 24.07.2011 13:27:39
- Wohnort: Graz
Beitrag
von smutbert » 23.01.2015 10:38:45
Ok, Verbeugung durch Facepalm ersetzt und den Link habe ich meinen Bookmarks hinzugefügt. Danke.
-
Meillo
- Moderator
- Beiträge: 9235
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 23.01.2015 11:33:38
Use ed once in a while!
-
smutbert
- Beiträge: 8342
- Registriert: 24.07.2011 13:27:39
- Wohnort: Graz
Beitrag
von smutbert » 23.01.2015 12:46:06
Sei unbesorgt, du hast nicht verärgert (zumindest nicht ernsthaft verärgert) geklungen.