Shell
“cat”命令:如何自動轉義所有可能違規的內容?
如果你複製的內容
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 命令嗎?
比較以下範例中的兩個 here 文件:
(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)
在 “EOF” 字元串周圍使用引號:
cat > /test <<'EOF' stuff $(pwd) EOF
輸出
stuff $(pwd)
字面上地。
請參閱 heredocs 上的bash 手冊。終止符字元串中的任何引號都可以防止正文中的任何擴展和替換。