[CentOS] bash variable expansion moment

Todd Denniston Todd.Denniston at tsb.cranrdte.navy.mil
Mon Nov 16 14:49:33 UTC 2009


ken wrote, On 11/14/2009 07:37 PM:
> It's half a nice Saturday later and many attempts have brought no
> satisfaction.  Maybe this can't be done.
> 
> 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).
> 
<SNIP>
> 
> 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.
> 
> Any mavens got the skinny on this?

As I understand the variable is interpreted from the perspective of the line of the file, and bash 
does not inline the function.

A trick around it can be gotten with the following modification of your scripts.
---func-file----------------------
Line()
{
echo This is line "$MyLN" $@
}
#extra
#lines
#desired
#to
#show
#that
#execution
#not
#early, orig
#simply
#placed
#early
#in
#file
LineO()
{
echo This is line "$LINENO" $@
}
-------------------------

----main---------------------
#!/bin/bash

. ./func-file

MyLN=$LINENO Line ... it should be $LINENO
LineO ... it should be $LINENO
-------------------------

-- 
Todd Denniston
Crane Division, Naval Surface Warfare Center (NSWC Crane)
Harnessing the Power of Technology for the Warfighter


More information about the CentOS mailing list