Shell

貓寫文字裡面有“$”

  • January 6, 2020

我想將配置資訊寫入$內部包含美元符號 ( ) 的特定文件。這似乎是個問題。

這是我所做的:

$ 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!

在此處輸入圖像描述

引用自:https://unix.stackexchange.com/questions/104302