码迷,mamicode.com
首页 > 系统相关 > 详细

shell脚本之函数篇

时间:2018-08-08 13:46:54      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:存在   nts   .com   状态   输出   不同   $@   命令   $?   

话不多说,直接上格式:

linux shell中的函数格式:

  function Myfunc(){

    action;

    [return int;]  

  }

  其中,个人认为function和()都是函数的标志,如果不需要传递参数的话,选择其一即可让Myfunc表示为一个函数;

过程式的编程,涉及到一个重要的话题,即代码重用,一段代码的重用性是衡量程序脚本水平的重要指标之一。

Shell中的函数也是有生命周期的:

  在被调用时创建,返回时终止。return是终止函数执行的标志。一旦出现return时,函数内剩余的内容不会被执行。

  如果函数中没有return语句,缺省情况下,返回的是函数中最后一条命令的执行结果。

函数为什么需要返回值?

  函数的返回值区别于函数的执行结果;

  函数的执行结果可有可无,通过使用echo、print等命令输出信息;

  函数的返回值,也成函数的退出状态码,一定存在,默认是函数中最后一条命令的退出状态码,否则就用return N来实现(注意这里的N必须为整数)

  个人认为,函数的返回值一方面可以便于我们做脚本中的逻辑判断,通过在函数中设置不同的return值来实现不同的逻辑决策,

  从而实现不同的功能,另一方面,是在函数内部去实现逻辑判断,从而终止函数的执行。

 

和大多数的编程语言相似,Shell脚本中的函数也可以传递参数:

    ① 如何传递参数?

       调用函数时,在函数名后面以空白分隔开的实参列表即可;

        如:  

             #!/bin/bash

             Myfunc(){

echo "the first argument is $1"
echo "the number of arguments is $#"
return 4
}                  
Myfunc "hello" "world"

执行结果:

root@dbt:/home/marvin/shell# ./function.sh
the first argument is hello
the number of arguments is 2
root@dbt:/home/marvin/shell# echo $?
4

 

     ② 在函数体中,有哪些特殊变量可以引用?

        如上述代码中,$1和$#的使用:

          我们可以使用$1 $2 $3 ...来引用传递参数,

          使用$0来引用该脚本的相对路径;

          使用$#来引用传递参数的数目;

          使用$*和$@来引用传递的整体参数(两者略有区别);

        一切和shell脚本中原生的特殊变量类似。

     ③ 函数递归的实现:

        技术分享图片

 

shell脚本之函数篇

标签:存在   nts   .com   状态   输出   不同   $@   命令   $?   

原文地址:https://www.cnblogs.com/temagenie/p/9442038.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!