Comando "cat": ¿cómo escapar automáticamente de todo lo que pueda ser una infracción?

Comando "cat": ¿cómo escapar automáticamente de todo lo que pueda ser una infracción?

Si copia el contenido de

httpd.conf

y luego péguelo en un comando cat... como este...

#!/bin/bash
cat > /test << EOF
pasted here..
EOF

te encuentras con este error:

-bash: command substitution: line 1: unexpected EOF while looking for matching `''
-bash: command substitution: line 4: syntax error: unexpected end of file

Quizás la solución sea escapar de los signos de dólar y tal vez incluso de las cotizaciones, etc.

pero dado que se trata de un archivo tan grande... ¿se pueden escapar automáticamente los signos de dólar?

¿Mi única opción es escapar de ellos a través de otro programa y luego dárselo al comando cat?

Respuesta1

Utilice comillas alrededor de la cadena "EOF":

cat > /test <<'EOF'
stuff $(pwd)
EOF

salidas

stuff $(pwd)

literalmente.

Ver elmanual de bashen heredocs. Las comillas en la cadena de terminación impiden cualquier expansión y sustitución en el cuerpo.

Respuesta2

Compare los dos documentos aquí en el siguiente ejemplo:

(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)

información relacionada