myFun()和函数myFun之间的区别

时间:2014-11-24 22:19:02

标签: bash function

作为bash的新(ish)用户,myFun()funtion myFun之间有什么区别?我遇到过这两个问题,不仅仅是人们的代码,还有教程。这两者有什么区别吗?当我尝试它时,似乎没有什么不同,所以我相当确定这两个定义函数的方法在语法上是不同的,并且根本没有不同的运行方式,但有人可以确认这个假设吗?

1 个答案:

答案 0 :(得分:3)

这两种语法在定义函数方面有很大的不同:

   name() compound-command
   function name compound-command

The former is POSIX,因此广泛可移植。后者不是。否则,它们是相同的。

实施例

dash是类似debian的系统上的默认shell(/bin/sh)。观察到,在dash下,这种定义函数的方法是成功的:

$ fn() { date; }
$ fn
Mon Nov 24 14:27:49 PST 2014

但是,这种方法不是:

$ function fn { date; }  
dash: 2: function: not found

ash(busybox的shell)下存在类似的错误:

$ function fn { date; }
-sh: function: not found