Befehl „cat“: Wie kann man automatisch alles maskieren, was einen Verstoß darstellen könnte?

Befehl „cat“: Wie kann man automatisch alles maskieren, was einen Verstoß darstellen könnte?

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)

verwandte Informationen