在 Linux 中,如果你想在 Shell 脚本中打印当前代码行号(即脚本执行时的行号),可以使用以下几种方法:
✅ 方法 1:使用 LINENO 变量(推荐)
在 Shell 脚本中,LINENO 是一个内置变量,表示当前行号(从 1 开始计数)。
#!/bin/bash
# 打印当前行号
echo "当前行号:$LINENO"
示例输出:
当前行号:1
当前行号:2
...
✅ 方法 2:使用 trap 和 echo(适用于脚本中任意位置)
如果你在脚本中想在任意位置打印行号,可以使用 trap 来捕获当前行号。
#!/bin/bash
trap 'echo "当前行号:$LINENO"' DEBUG
# 此处执行一些操作
echo "这是第一行"
echo "这是第二行"
输出:
当前行号:1
当前行号:2
✅ 方法 3:使用 set -x(调试模式)
如果你在脚本中使用 set -x,它会打印出每一条执行的命令和参数,包括行号。
#!/bin/bash
set -x
# 执行一些命令
echo "这是第一行"
echo "这是第二行"
输出:
+ echo '这是第一行'
+ echo '这是第二行'
✅ 方法 4:使用 $(seq) 或 $(($LINENO))
如果你需要在某个命令中获取当前行号,可以使用 seq 或直接使用 $LINENO。
echo "行号是:$(($LINENO))"
✅ 方法 5:使用 printf(更灵活)
printf "当前行号:%dn" "$LINENO"
✅ 总结
| 方法 | 适用场景 | 优点 |
|---|---|---|
LINENO |
脚本中直接打印行号 | 简单、直接 |
trap |
在任意位置打印行号 | 适用于任意位置 |
set -x |
调试模式打印所有命令 | 适用于调试 |
printf |
更灵活的格式化输出 | 可以自定义格式 |
如果你需要在日志中记录行号,可以将上述方法集成到日志文件中,例如:
#!/bin/bash
LOG_FILE="/path/to/log.txt"
# 打印行号到日志
echo "当前行号:$LINENO" >> "$LOG_FILE"
如需进一步定制日志格式,可以结合 printf 或 sed 等工具。


