我知道我可以在调试bash脚本时使用$LINENO打印行号。
#!/bin/bash
set -x
PS4='${LINENO}: '
echo "hello"
set +x如果我运行脚本,则打印出以下内容
$ ./script.sh
+ PS4='${LINENO}: '
4: echo hello
hello看上去很棒。我可以清楚地看到,echo来自第4行。
但是,如果我源脚本,行号会被复制。
$ source script.sh
33: PS4='${LINENO}: '
44: echo hello
hello
55: set +x不知道我做错了什么,但很明显,我的脚本没有多达33,44,55的行号。只是电话号码好像错了。为什么外包脚本会产生这种奇怪的输出呢?
发布于 2021-02-25 16:38:30
当您使用source脚本时,它的作用就好像脚本的内容是手工输入在命令行中一样。脚本的后续source编码将提供更高的“行号”,因为该度量实际上是指示在该shell会话中执行的命令的数量。这可以通过简单地在交互式提示符下执行printf "%s\n" "$LINENO"来揭示。
https://unix.stackexchange.com/questions/636388
复制相似问题