3

现在,我已经知道这意味着有一个错误,但我找不到它。您能帮忙检查我的代码并尝试找出问题所在吗?错误消息围绕我创建的日期函数。所有其他功能在此代码中都可以正常工作。

错误:

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
4

2 回答 2

4

date函数在没有终止条件的情况下递归调用自身。这可能总是在 Bash 中出现段错误。用于command date调用日期命令而不是函数。在 bash 4.2 中,您还可以通过设置FUNCNEST变量来设置递归深度限制以帮助检测此类错误。

于 2012-12-08T01:07:59.810 回答
2

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

于 2012-12-08T01:07:56.737 回答