我在bash脚本中只有一个变量,${PHP_V}
并试图像这样传递nginx配置文件:
cat <<'EOF' > /etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
root /vagrant/webroot;
index index.php;
server_name _;
ssl_certificate /etc/nginx/certs/vagrantbox.crt;
ssl_certificate_key /etc/nginx/certs/vagrantbox.key;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass unix:/run/php/php${PHP_V}-fpm.sock;
fastcgi_index index.php;
fastcgi_intercept_errors on;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
}
}
EOF
但没有成功。怎么做?
您需要取消报价EOF
:
如果对单词的任何部分加引号,则应通过对单词执行引号删除来形成定界符,并且此处文档行不得扩展。否则,定界符应为单词本身。
如果未引用单词的任何部分,则应扩展本文档的所有行,以进行参数扩展,命令替换和算术扩展。
请参阅:2.7.4此处文档
但是请注意,您的here文档中有几件事需要单独进行转义以防止扩展:
cat <<EOF > /etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
root /vagrant/webroot;
index index.php;
server_name _;
ssl_certificate /etc/nginx/certs/vagrantbox.crt;
ssl_certificate_key /etc/nginx/certs/vagrantbox.key;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php\$ {
try_files \$uri =404;
include fastcgi_params;
fastcgi_pass unix:/run/php/php${PHP_V}-fpm.sock;
fastcgi_index index.php;
fastcgi_intercept_errors on;
fastcgi_param SCRIPT_FILENAME
\$document_root\$fastcgi_script_name;
}
}
EOF
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句