[CentOS] bash variable expansion moment
ken
gebser at mousecar.com
Sun Nov 15 23:21:40 UTC 2009
On 11/15/2009 02:22 PM Stephen Harris wrote:
> On Sun, Nov 15, 2009 at 01:50:30PM -0500, ken wrote:
>> 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
>
> No it's not. Variables are _not_ evaluated when the function is defined;
> they're evaluated at execution. ....
See my example below.
>
> Is this what you wanted to do?
Stephen, thanks for your reply, but you're not seeing what I want to do.
Let me post my example once again:
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) with the function definition:
-------------------------
Line()
{
echo This is line "$LINENO" $@
}
-------------------------
That one is called by this one below:
-------------------------
#!/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.
I want the output to be:
This is line 5 ... it should be 5
but it's not. The num output in "This is line [num]" is whatever the
line number is in the function definition. (I.e., $LINENO is evaluated
in the function. Try it if you don't believe me.)
What I'm looking for is the proper syntax to wrap around $LINENO in the
function definition (in func-file) so that it's not evaluated there but
is evaluated when the function is called in the second file.
More information about the CentOS
mailing list