在命令行上调试bash脚本很复杂。
是否有一个好的基于GUI的调试器可用于调试bash脚本?
答案 0 :(得分:6)
下载ShellEd eclipse插件(更新网站对我不起作用),允许编辑bash脚本。通过Help -> Install new software -> Add -> Archive
安装。
下载basheclipse并将内容解压缩到您的eclipse plugins
目录插件。
重启eclipse。创建一个新的Eclipse项目BashTest
。
将文件myscript.sh
添加到项目中:
#! /bin/bash
. _DEBUG.sh
echo 'kshitiz'
echo 'This is a test'
x=1
y=3
z=3
将_DEBUG.sh
添加到您的项目中(在basheclipse
的下载zip中)。
转到Run -> Debug configurations
并在Bash script
类别下创建新配置。选择myscript.sh
。
然后点击Debug
。打开Debug
视角。
转到Window -> Preferences -> Shell script -> Interpreters
并确保解释程序为/bin/bash
。对我来说,默认值为/bin/dash
。
在脚本中设置断点。由于某种原因,右键单击菜单不显示设置断点的选项,但Ctrl+Shift+B
应该有效。
运行脚本Run -> Run as -> Run shell script
。断点会命中,但它无法找到你的脚本源(很奇怪呃!)。只需点击Select Bash script
,然后选择myscript.sh
即可。
现在您可以单步执行代码并分析变量:
答案 1 :(得分:3)
一个有用的技巧是用
启动你的(可执行的)bash脚本#!/bin/bash -vx
至少在调试阶段;你会从bash那里得到很多有用的消息。见bash(1)
如果您的脚本不应该在终端中使用(例如,它是从crontab(5)条目调用的),您也可以使用logger(1)命令。
最后,我认为bash
不是执行复杂脚本的正确工具。如果您的脚本变得复杂或大于几十行,请考虑切换到更好的脚本语言(例如GNU guile,python,gawk等等)。通常,您不应在bash
中编写很多代码。调试bash脚本很痛苦通常是一种症状,你应该用更好的语言重新编写该脚本。
您可能还会发现生成您的shell脚本很有用。 autogen可能对此有用。