Cat Command – How to Automatically Escape Violations in Cat Command

catcommand linehere-documentquotingshell

If you copy the contents of

httpd.conf

and then paste it into a cat command.. such as this one..

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

you run into this error:

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

perhaps the solution is to escape the dollar signs and maybe even quotes and so on..

but given that this is such a large file.. can dollar signs be automatically be escaped ?

is my only option to escape them via another program and then give it to the cat command ?

Best Answer

Compare the two here documents in the following example:

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