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