文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>函数

函数

时间:2009-07-11  来源:流星陨落

13.16.1  定义函数

有两种格式可以声明一个bash函数。一种是旧的Bourne shell方式,函数名后面跟有一对空的圆括号,再跟函数定义。新的格式(Korn shell方式)是用function关键字后跟函数名以及函数定义。如果使用新方法,圆括号是可选的。函数的定义由花括号中的一组命令构成,命令之间以分号分隔。最后那条命令必须以分号终结。花括号两侧的空格是必需的。传递给函数的任何参数被当作函数内的位置参量。一个函数的位置参量对函数来说是局部的。内置函数local允许在函数定义中创建局部变量。函数还可以递归,可以无限次调用它本身。

格式

function_name () { commands ; commands; }

function function_name { commands ; commands; }

function function_name () { commands ; commands; }

范例13-81

1   $ function greet { echo "Hello $LOGNAME, today is $(date)"; }

2   $ greet

    Hello ellie, today is Wed Jul 14 14:56:31 PDT  2004

3   $ greet () { echo "Hello $LOGNAME, today is $(date)"; }

4   $ greet

    Hello ellie, today is Wed Jul 14 15:16:22 PDT  2004

5   $ declare -f

    declare -f greet()

    {

       echo "Hello $LOGNAME, today is $(date)"

    }

6   $ declare -F

    declare -f greet

7   $ export -f greet

8   $ bash                 # Start subshell

9   $ greet

    Hello ellie, today is Wed Jul 14 17:59:24 PDT  2004

说明

1. 关键字function后跟函数名greet。函数定义用花括号括起来。在左花括号后必须有一个空格。同一行的语句用分号来终结。

2. 当调用greet函数时,括在花括号中的命令在当前shell环境下执行。

3. 用Bourne shell格式再次定义greet函数,函数名后跟一对空的圆括号,然后是函数定义。

4. greet函数再次被调用。

5. 带-f开关的declare命令列出在该shell中定义的所有函数以及它们的定义。

6. 带-F开关的declare命令只列出函数名。

7. 带-f开关的export命令使函数成为全局的。即子shell也可以获得。

8. 启动一个新的bash shell。

9. 在这个子shell中函数是定义的,因为它已经被导出。

范例13-82

1   $ function fun {

         echo "The current working directory is $PWD."

         echo "Here is a list of your files: "

         ls

         echo "Today is $(date +%A).";

   }

2   $ fun

    The current working directory is /home.

    Here is a list of your files:

    abc      abc123   file1.bak  none       nothing   tmp

    abc1     abc2     file2         nonsense  nowhere   touch

    abc122   file1    file2.bak   noone      one

    Today is Wednesday.

3   $ function welcome { echo "Hi $1 and $2"; }

4   $ welcome tom joe

    Hi tom and joe

5   $ set jane anna lizzy

6   $ echo $*

    jane anna lizzy

7   $ welcome johan joe

    hi johan and joe

8   $ echo  $1 $2

    johan joe

9  $ unset -f welcome     # unsets the function

说明

1. 命名并定义函数fun。关键字function后跟一个函数名和括在花括号内的一组命令。命令分列在单独的行。如果它们列在同一行里,就必须用分号来分隔。在第一个花括号后必须有一个空格,否则将出现语法错误。必须在一个函数使用前就定义它。

2. 当被调用时,函数的行为和脚本的相同。依次执行函数定义中的每条命令。

3. 有两个位置参量用于函数welcome。当参数传递给函数时,将给位置参量赋实际值。

4. 函数的参数tom和joe被分别赋给$1和$2。一个函数里的位置参量是函数私有的,而且不会影响函数外的任何使用。

5. 在命令行设置位置参量。这些变量对在函数中设置的那些没有任何影响。

6. $*显示当前设置的位置参量值。

7. 调用函数welcome。赋给位置参量的值是johan和joe。

8. 在命令行赋值的位置参量不受在函数中定义的那些参数的影响。

9. 带-f开关的unset内置命令将清除函数定义。

13.16.2  列出和清除函数

要列出函数和它们的定义,就要用declare命令。在bash 2.x及以上版本中,declare –F仅列出函数名。函数及其定义将和输出变量、局部变量一起显示在输出结果中。函数及其定义可以用unset -f命令来清除。

 

相关阅读 更多 +
排行榜 更多 +
城市公交模拟器2019

城市公交模拟器2019

模拟经营 下载
假面骑士魂骑模拟器

假面骑士魂骑模拟器

模拟经营 下载
市政工程模拟器

市政工程模拟器

模拟经营 下载