Wenn Sie den Inhalt von
httpd.conf
und fügen Sie es dann in einen Cat-Befehl ein, beispielsweise diesen hier.
#!/bin/bash
cat > /test << EOF
pasted here..
EOF
Sie erhalten diesen Fehler:
-bash: command substitution: line 1: unexpected EOF while looking for matching `''
-bash: command substitution: line 4: syntax error: unexpected end of file
Vielleicht besteht die Lösung darin, auf Dollarzeichen und vielleicht sogar auf Anführungszeichen usw. zu verzichten.
aber wenn man bedenkt, dass es sich um eine so große Datei handelt, können Dollarzeichen automatisch maskiert werden?
ist meine einzige Möglichkeit, ihnen über ein anderes Programm zu entkommen und es dann dem Cat-Befehl zu übergeben?
Antwort1
Setzen Sie die Zeichenfolge „EOF“ in Anführungszeichen:
cat > /test <<'EOF'
stuff $(pwd)
EOF
Ausgänge
stuff $(pwd)
buchstäblich.
Sehen Sie sich dieBash-Handbuchauf Heredocs. Alle Anführungszeichen in der Abschlusszeichenfolge verhindern Erweiterungen und Ersetzungen im Textkörper.
Antwort2
Vergleichen Sie die beiden Dokumente im folgenden Beispiel:
(yeti@darkstar:6)~/wrk/tmp$ cat ./xyzzy
#!/bin/bash
cat << EOF
Version 1 - Today is $(date)
EOF
cat << 'EOF'
Version 2 - Today is $(date)
EOF
(yeti@darkstar:6)~/wrk/tmp$ ./xyzzy
Version 1 - Today is Sa 21. Jun 08:51:38 CEST 2014
Version 2 - Today is $(date)