shell脚本之函数篇

Posted temagenie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本之函数篇相关的知识,希望对你有一定的参考价值。

话不多说,直接上格式:

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"

执行结果:

[email protected]:/home/marvin/shell# ./function.sh
the first argument is hello
the number of arguments is 2
[email protected]:/home/marvin/shell# echo $?
4

 

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

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

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

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

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

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

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

     ③ 函数递归的实现:

        技术分享图片

 









以上是关于shell脚本之函数篇的主要内容,如果未能解决你的问题,请参考以下文章

Shell脚本之初见——理论篇

shell脚本编程之基础篇

Linux之Shell脚本编程

shell脚本从入门到精通(中级)之提高篇

大数据系列博客之 --- 深入简出 Shell 脚本语言(基础篇)

菜鸟--shell脚本编写之解决问题篇