如果您複製內容
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)