分页: 1 / 1

bash的bug

发表于 : 2006-10-14 11:20
nobrain

代码: 全选

song@ubuntu-song:/tmp$ bash --version
GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
当在shell script中定义function的时候,会有错误

代码: 全选

song@ubuntu-song:/tmp$ cat haha.sh
#!/bin/sh

function printhaha ()
{
        echo 'inner function'
}

echo "outter function"

printhaha
song@ubuntu-song:/tmp$ ./haha.sh
./haha.sh: 3: Syntax error: "(" unexpected
如果将function printhaha() 后面的括号去掉:

代码: 全选

song@ubuntu-song:/tmp$ cat haha_1.sh
#!/bin/sh

function printhaha
{
        echo 'inner function'
}

echo "outter function"

printhaha
song@ubuntu-song:/tmp$ ./haha_1.sh 
./haha_1.sh: 3: function: not found
inner function
outter function
./haha_1.sh: 10: printhaha: not found
居然不认function关键字。

如果不用function关键字定义函数:

代码: 全选

song@ubuntu-song:/tmp$ cat haha_2.sh
#!/bin/sh

printhaha ()
{
        echo 'inner function'
}

echo "outter function"

printhaha
song@ubuntu-song:/tmp$ ./haha_2.sh
outter function
inner function
只有这样才正常。

发表于 : 2006-10-14 14:53
eexpress
这个是版本不同的问题吧。不能叫bug。反正我的都是直接不使用function的。

发表于 : 2006-10-14 16:22
nobrain
用man bash里面关于function的定义,说可以用function关键字,但是实际居然不能用了。我核对了版本号,man中bash的文档是3.1的,我bash的版本3.1.17,应该是对上的,反正是有问题啦。

这样有些东西运行就会有问题,今天用anjuta创建tags的时候,调用的脚本就出问题了,原因就是因为这个function关键字。

发表于 : 2006-10-17 9:14
nobrain
反正文档和程序不符,至少有一个存在bug

Re: bash的bug

发表于 : 2013-02-20 10:37
satanness
没想到这个问题06年就有了。。我现在还遇见这个问题呢,去掉function就可以,加上就报错。