Consider:
#!/bin/bash echo ' ' $LINENO echo '' ' ' $LINENO
The first echo correctly prints a 4, but the second echo prints a 5 instead of 6. Am I missing something, or is this a bug? (Using bash 3.00.15)
Consider:
#!/bin/bash echo ' ' $LINENO echo '' ' ' $LINENO
The first echo correctly prints a 4, but the second echo prints a 5 instead of 6. Am I missing something, or is this a bug? (Using bash 3.00.15)
It looks like an implementation misfeature (bug) in bash.
I used:
which yielded:
Which supports the theory that the variable is evaluated before the shell considers the line to have been completed. Once the line has been completed, it updates the LINENO and proceeds.
Bash versions tested: 3.2.48 (mac), 4.1.5 (linux)
When I use the syntax:
it gets the newer line number. It seems to be related to the evaluation of the empty string carried as the only argument on the line.
Bash
seems to interpret a multi-string & multi-line argument to theecho
command to be on just one line of the source code file (script) becauseBash
has to concatenate the multi-string & multi-line argument to theecho
command into a single (one line) argument. The concatenation mechanism is also triggered by an empty string''
followed by a string containing a newline characterecho -e '' + '\n' + $LINENO
.