Shell
貓寫文字裡面有“$”
我想將配置資訊寫入
$
內部包含美元符號 ( ) 的特定文件。這似乎是個問題。這是我所做的:
$ cat >> /etc/nginx/nginx.conf <<EOF # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes 1; error_log /var/log/nginx/error.log; #error_log /var/log/nginx/error.log notice; #error_log /var/log/nginx/error.log info; pid /var/run/nginx.pid; events { worker_connections 1024; } http { ## Detect when HTTPS is used map $scheme $https { default off; https on; } include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; # Load config files from the /etc/nginx/conf.d directory # The default server is in conf.d/default.conf include /etc/nginx/conf.d/*.conf; } EOF
我該如何解決這個問題?
報價
EOF
:$ var=foo $ cat << EOF > $var > EOF foo $ cat << 'EOF' > $var > EOF $var
來自
man bash
:如果其中的任何字元
word
被引用,則分隔符是對 word 進行引號刪除的結果,並且 here-document 中的行不展開。
將 EOF 引用為字元串文字。‘EOF’。
cat << 'EOF' > foo echo "$1" EOF bash foo hello
cat << 'EOF' > test echo "First command line argument is : $1" echo "Second command line argument is : $2" echo "List of all command line arguments is: $@" EOF bash test hello world!