如何调试bash完成?


12

我创建了一些bash完成函数,这些函数看起来都是孤立的,但是当我尝试使用它们标签时,会给我意想不到的结果。

是否可以连接bashdb,然后尝试选项卡完成某些内容并逐步调试并确定出现了什么问题?


2
只是为了增加我的分数:你应该使用set -xin bash来调试你的脚本。使用set +x禁用。

Answers:


3

set -x

如果你set -x在交互式会话或自动完成脚本本身,(几乎?)每个命令及其结果将被打印出来。这包括在自动完成脚本中完成的工作。

然后可以再次安静下来set +x

-X

扩展每个简单命令后,对于command,case命令,select命令或arithmetic for command,显示PS4的扩展值,然后显示命令及其扩展参数或关联的单词列表。

- 来自Bash手册#The Set Builtin


2

只需从bash完成函数中记录/输出; 因为它们很可能不是火箭科学,所以这应该是相当容易的。有可能连接bashdb,但感觉不必要......


连接bashdb要简单得多,而且我希望,比向脚本添加日志语句要快。但是,我不知道是否可能,而且缺乏答案会表明事实并非如此。我设法通过将状态记录到您建议的文件来解决我的问题,但在使用完成时将日志记录信息输出到终端是没有用的。
Dan Midwood

3
@DanMidwood:使用两个终端(例如屏幕+分割)。在一个中,在第二个tail -f日志中运行完成。
choroba

@choroba:很好。:D
Tamara Wijsman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.