Я пытаюсь создать файл конфигурации nginx, используя here-document с переменным расширением. Я использую:

cat <<EOF > /etc/nginx/nginx.conf
settings
EOF

Он работает и расширяет нужные мне переменные, но есть переменные, которые нужно печатать буквально, поэтому мой файл конфигурации ломается.

Пример строк, которые мне нужно напечатать буквально:

limit_req_zone $binary_remote_addr zone=one:30m rate=20r/s;
try_files $uri =404;

Как мне исправить эту проблему?

1
Freddy 1 Дек 2019 в 11:26

1 ответ

Лучший ответ

Избегайте $ с помощью \ тех переменных, которые вы не хотите заменять:

cat <<EOF > /etc/nginx/nginx.conf
limit_req_zone \$binary_remote_addr zone=one:30m rate=20r/s;
try_files \$uri =404;
EOF
2
Freddy 1 Дек 2019 в 11:03
Хотя это работает, у меня есть уродливый обходной путь ... просто распечатайте все буквально, а затем отправьте материал позже: O, это проще, чем избежать всего необходимого
 – 
Freedo
1 Дек 2019 в 11:05
Или используйте envsubst для замены только определенных переменных, таких как export var1=foo var2=bar; envsubst '$var1 $var2' < /etc/nginx/nginx.conf > /etc/nginx/nginx.conf.new
 – 
Freddy
1 Дек 2019 в 11:18