如何在POSIX shell脚本中获得当前执行的行数?例如,我有一个脚本:
#!/bin/sh
set -eu
echo "A"
echo "B"
echo "Script '$0' error at line no: <line-no>"
exit 1
echo "C"
和我想在<line-no>
的位置上得到脚本的当前行,因此输出为例如:
脚本' Script .sh'第8行错误
你可以使用$LINENO:
LINENO
由shell设置为一个十进制数,表示脚本或函数在执行每个命令之前的当前顺序行号(从1开始编号)。如果用户取消设置或重置LINENO,该变量可能会在shell的生命周期中失去其特殊意义。如果shell当前没有执行脚本或函数,则LINENO的值未指定。POSIX.1-2017的本卷仅为支持用户可移植性实用程序选项的系统指定了该变量的效果。