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
.
단어의 일부가 인용된 경우 해당 단어를 해제하여 구분 기호를 형성해야 하며 여기서 문서 행을 확장해서는 안 됩니다. 그렇지 않은 경우 구분 기호는 단어 자체여야 합니다.
단어의 일부가 인용되지 않은 경우 여기에 있는 문서의 모든 행은 매개변수 확장, 명령 대체 및 산술 확장을 위해 확장되어야 합니다.
바라보다: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