Re: знак '$' в директиве set $var "value"

Maxim Dounin mdounin на mdounin.ru
Ср Мар 24 20:00:25 MSK 2010


Hello!

On Wed, Mar 24, 2010 at 12:03:01PM -0400, zuborg wrote:

> Нужно задать переменную $salt2 с таким вот значением '$1$EgMajByp$' (три знака '$' внутри)
> 
> set $salt2 '$1$EgMajByp$';
> 
> Но парсер упорно считает знак '$' за начало имени переменной и никак не могу найти возможности этого избежать ;(
> Искейпы через '\' не работают, разные виды кавычек не помогают...
> В сорцах парсинг зарыт слишком глубого для меня - не нашел где пропатчить ;(

Патчить - в ngx_http_script.c.  В качестве workaround'а можно 
засунуть значение в какой-нибудь map (ну или символ '$' в 
какой-нибудь map).

> Вариантов решения вижу три (для патча):
> 1 - прикрутить искейп через '\'
> 2 - сделать спец переменную $$ в которой будет храниться символ '$', тогда достаточно будет продублировать $ чтоб в значении оказался этот символ
> 3 - отключить парсинг для значения, заключенного в одинарные кавычки (как в перле)

1 или 2.

Кавычки обрабатываются на уровне парсинга конфига и в нужное место 
просто не доберутся, так что это совсем не вариант.

Но вообще там в этом месте много чего хорошо бы переделать.

Maxim Dounin



Подробная информация о списке рассылки nginx-ru