bash的bug

编译打包和其他
回复
头像
nobrain
帖子: 808
注册时间: 2005-08-25 13:58
来自: ustc
联系:

bash的bug

#1

帖子 nobrain » 2006-10-14 11:20

代码: 全选

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
只有这样才正常。
爱喝真猪奶茶的夜鸣猪
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#2

帖子 eexpress » 2006-10-14 14:53

这个是版本不同的问题吧。不能叫bug。反正我的都是直接不使用function的。
● 鸣学
头像
nobrain
帖子: 808
注册时间: 2005-08-25 13:58
来自: ustc
联系:

#3

帖子 nobrain » 2006-10-14 16:22

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

这样有些东西运行就会有问题,今天用anjuta创建tags的时候,调用的脚本就出问题了,原因就是因为这个function关键字。
爱喝真猪奶茶的夜鸣猪
头像
nobrain
帖子: 808
注册时间: 2005-08-25 13:58
来自: ustc
联系:

#4

帖子 nobrain » 2006-10-17 9:14

反正文档和程序不符,至少有一个存在bug
爱喝真猪奶茶的夜鸣猪
头像
satanness
帖子: 19
注册时间: 2008-07-23 18:18

Re: bash的bug

#5

帖子 satanness » 2013-02-20 10:37

没想到这个问题06年就有了。。我现在还遇见这个问题呢,去掉function就可以,加上就报错。
回复