Variables and includes

Maxim Dounin mdounin at mdounin.ru
Mon Jan 14 11:09:30 UTC 2013


Hello!

On Sun, Jan 13, 2013 at 08:18:35PM -0800, Daniel L. Miller wrote:

> On 1/13/2013 6:50 PM, Maxim Dounin wrote:
> >Hello!
> >
> >On Sat, Jan 12, 2013 at 09:40:14PM -0800, Daniel L. Miller wrote:
> >
> >>Is it possible to use a variable from one configuration in a
> >>included config file?  Example:
> >>
> >>set $a = "hello";
> >>include test.conf;
> >>
> >>[test.conf]
> >>if ($a = "hello") {
> >>     set $a = "world";
> >>}
> >># something that works with $a
> >>
> >>Within the scope of the commands of test.conf, will $a be "hello" or
> >>"world"?  Currently my usage like this gives me a, "using
> >>unitialized variable" warning.
> >The "include" directive works during configuration parsing and
> >completely transparent to everything else.  That is, you may set a
> >variable in one file and then use it in an included file, it is
> >expected to work fine.
> >
> >On the other hand, example you've provided is syntactically
> >invalid and will result in the following error during
> >configuration parsing:
> >
> >nginx: [emerg] invalid number of arguments in "set" directive in ...
> >
> >Correct way to write it would be
> >
> >    set $a "hello";
> >
> >Note there is no "=" character.  See http://nginx.org/r/set for
> >details.
> Shows what happens when you quickly type up an example...thanks for
> catching it.
> 
> So I repeat my question - why, given the above example (with correct
> syntax), would I see warnings for "uninitialized variable" for the
> above in the "test.conf", as the variable is declared prior to the
> include statement?

Because of another problem resulted from quick typing?  Show the 
exact configuration which produces warning for you.

-- 
Maxim Dounin
http://nginx.com/support.html



More information about the nginx mailing list