I use often the value of LINEO in order to know where to look for issues in a script. Recently I discovered a bug.
Please consider the following 6 line script: ------------------------------------------------ #!/bin/bash if ((1)); then ( : ) ; echo 1 $LINENO fi echo 2 $LINENO ------------------------------------------------ if executed it should print: 1 4 2 6 And indeed that's the output if I run it on openSUSE Leap 15.5 (bash 4.4). However if I execute it on openSUSE tumbleweed (bash 5.2) the output is: 1 4 2 5 I compiled and tested several version of bash and the conclusion is that the bug is not there up to bash 4.4.18 and it shows up in bash-5.0-alpha and later releases. In order to trigger the bug in your script you need: 1) a compound command executed in a subshell ( : ) 2) included in if then fi The LINENO variable will start to show an incorrect value immediatly after the fi reserved word. Example: ------------------------------------------------ #!/bin/bash if ((1)); then ( : ) ; echo 1 $LINENO : # echo 3 $LINENO fi echo 2 $LINENO ------------------------------------------------ correct output with 4.4: 1 4 3 7 2 9 wrong output with 5.x: 1 4 3 7 2 5 Please let me know if you need more infotrmation.