unix shell脚本中出现分段错误(core dumped)错误。 帮助发现错误?

现在,我已经知道这意味着有一个错误,但我无法find它。 你能帮我查看我的代码,并试图发现哪里出了问题吗? 错误消息围绕我创build的date函数。 所有其他函数在这个代码中工作正常。

错误:

sguthrie1@cs:~$ ./finalproject.sh -d Segmentation fault (core dumped) 

码:

 function check { echo "usage: hw14.sh option argument Please enter one or more options or arguments." exit } function date { if [[ $myvar == "-d" ]] then date "+%d %B,%Y" fi } function host { if [[ $myvar == "-h" ]] then hostname fi } function who { if [[ $myvar == "-w" ]] then whoami fi } function help { if [[ $myvar == "-help" ]] then echo " valid options: -d = display today's date in day-month-year format -h = display name of computer you are currently working on -w = display who you are logged in as arguments: Any argument entered is checked to see if it is a file name " fi } if [ $# -le 0 ] then check fi for myvar do if [[ $myvar == "-"* ]] then date; host; who; help fi done 

date函数正在递归调用,没有终止条件。 这可能会总是在Bash 段落 。 使用command date来调用日期命令而不是函数。 在bash 4.2中,你也可以设置一个递归深度限制,通过设置FUNCNEST变量来帮助检测这样的错误。

你的date函数无意中自行调用。 您可以重命名您的函数以避免冲突,也可以更具体地将系统命令称为/bin/date