У меня есть только одна переменная в скрипте 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
но безуспешно. Как это сделать?
решение1
Вам необходимо удалить кавычки EOF
:
Если какая-либо часть слова заключена в кавычки, разделитель должен быть образован путем удаления кавычек из слова, а строки документа here-document не должны расширяться. В противном случае разделителем должно быть само слово.
Если ни одна часть слова не заключена в кавычки, все строки документа будут расширены для расширения параметров, подстановки команд и арифметического расширения.
Видеть :2.7.4 Здесь-Документ
Однако обратите внимание, что в вашем документе есть несколько элементов, которые необходимо экранировать по отдельности, чтобы предотвратить расширение:
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