如果您复制内容
httpd.conf
然后将其粘贴到 cat 命令中..例如这个..
#!/bin/bash
cat > /test << EOF
pasted here..
EOF
你遇到这个错误:
-bash: command substitution: line 1: unexpected EOF while looking for matching `''
-bash: command substitution: line 4: syntax error: unexpected end of file
也许解决方案是逃避美元符号,甚至可能是引号等等。
但鉴于这是一个如此大的文件..美元符号可以自动转义吗?
我唯一的选择是通过另一个程序转义它们然后将其交给 cat 命令吗?
答案1
在“EOF”字符串周围使用引号:
cat > /test <<'EOF'
stuff $(pwd)
EOF
输出
stuff $(pwd)
字面上地。
请参阅bash手册在此文档上。终止符字符串中的任何引号都会阻止正文中的任何扩展和替换。
答案2
在以下示例中比较此处的两个文档:
(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)