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.