首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PS4:使用$LINENO: execute源代码调试bash脚本

PS4:使用$LINENO: execute源代码调试bash脚本
EN

Unix & Linux用户
提问于 2021-02-25 16:29:20
回答 1查看 992关注 0票数 1

我知道我可以在调试bash脚本时使用$LINENO打印行号。

代码语言:javascript
复制
#!/bin/bash 
set -x
PS4='${LINENO}: '
echo "hello"
set +x

如果我运行脚本,则打印出以下内容

代码语言:javascript
复制
$ ./script.sh
+ PS4='${LINENO}: '
4: echo hello
hello

看上去很棒。我可以清楚地看到,echo来自第4行。

但是,如果我源脚本,行号会被复制。

代码语言:javascript
复制
$ source script.sh
33: PS4='${LINENO}: '
44: echo hello
hello
55: set +x

不知道我做错了什么,但很明显,我的脚本没有多达33,44,55的行号。只是电话号码好像错了。为什么外包脚本会产生这种奇怪的输出呢?

EN

回答 1

Unix & Linux用户

发布于 2021-02-25 16:38:30

当您使用source脚本时,它的作用就好像脚本的内容是手工输入在命令行中一样。脚本的后续source编码将提供更高的“行号”,因为该度量实际上是指示在该shell会话中执行的命令的数量。这可以通过简单地在交互式提示符下执行printf "%s\n" "$LINENO"来揭示。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/636388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档