[CentOS] bash variable expansion moment

ken gebser at mousecar.com
Sun Nov 15 18:50:30 UTC 2009


On 11/15/2009 08:54 AM Stephen Harris wrote:
> On Sun, Nov 15, 2009 at 08:23:59AM -0500, ken wrote:
>> A function containing environmental variables in one file would be
>> called in another file.  The function would, then, pass (e.g.) $LINENO
>> as if it were a literal, but in the line where $Line is invoked it would
>> be evaluated and the value output.
> 
> I'm not quite sure what you're saying.  Typically variables are not expanded
> at 'parse' time, but at run time.
> 
> ....

>From the original post (somewhere got edited out):

I'm trying to write a function which, when called from one function
execute in another.  In itself, that's not the problem.  Rather, there's
one built-in variable which is evaluated in the function definition and
it's value is then set (too early).

Here's the one file (func-file):
-------------------------
Line()
{
echo This is line "$LINENO" $@
}
-------------------------

That one is called by this one:
-------------------------
#!/bin/bash

. ./func-file

Line ... it should be $LINENO
------------------------

I want the function Line to show the line number in the second file
where it's executed, not the line number from the sourced function.

=====================================

The problem is that $LINENO is evaluated in the function definition, and
not when called.  So I'm thinking to change "$LINENO" in the function
definition to some other syntax so that it won't be evaluated until called.

tnx



More information about the CentOS mailing list