• shell中函数的使用


      函数是一个脚本代码块,你可以对它进行自定义命名,并且可以在脚本中任意位置使用这个函数。如果想要这个函数,只要调用这个函数的名称就可以了。使用函数的好处在于模块化以及代码可读性强。

    (1).函数的创建语法

      函数的创建方法一:

    function 函数名称 {
        命令
    }
    

      函数的创建方法二:

    函数名称() {
        命令
    }
    

      注意:函数名称在当前脚本必须唯一。

      调用函数的方法:

    函数名称 参数1 参数2 ......
    

      调用函数时可以传递参数,函数中使用$1、$2......来引用传递的参数。

    (2).函数的使用实例

      实例1:

    [root@youxi1 ~]# vim a.sh
    #!/bin/bash
    function fun1 {
        echo "hello world"
    }
    
    fun2() {
        echo $[$1+$2]
    }
    
    fun1
    fun2 1 2
    [root@youxi1 ~]# sh a.sh
    hello world
    3
    

      实例2:如果存在相同名称的函数,以最后一个为准

    [root@youxi1 ~]# vim b.sh
    #!/bin/bash
    function fun1 {
        echo "hello world"
    }
    
    fun1() {
        echo "This is rewrite"
    }
    
    fun1
    [root@youxi1 ~]# sh b.sh
    This is rewrite
    

    (3).return返回值

      使用return命令来退出函数并返回特定的退出码($?)

    [root@youxi1 ~]# vim c.sh
    #!/bin/bash
    fun1() {
      echo "return 3"
      return 3
      echo "why?"
    }
    
    fun1
    [root@youxi1 ~]# sh c.sh
    return 3
    [root@youxi1 ~]# echo $?
    3
    

      注意:return一般是在函数的最后一行,因为一旦执行return命令,该函数后面的命令就不执行了。

      return与exit的区别:return和exit都可以返回退出码,但是不同的是,return是退出函数,而exit是退出整个脚本。

    (4).函数值赋给变量

      如下方实例中显示,此时的函数就相当于一个命令,需要使用$()或``调用。

    [root@youxi1 ~]# vim d.sh
    #!/bin/bash
    fun1() {
      read -p "Input a number:" num
      echo $[num*5]
    }
    
    num2=`fun1`  #也可以是$(fun1)
    echo $num2
    [root@youxi1 ~]# sh d.sh 
    Input a number:2
    10
    

    (5).外部参数传入函数

      前面已经提到过,调用函数可以在后面跟随参数,函数内部可以使用$n的形式调用。

    [root@youxi1 ~]# vim e.sh
    #!/bin/bash
    fun1() {
      echo $1
    }
    
    fun2() {
      echo $1
    }
    
    fun3() {
     echo $1
    }
    
    fun1 $1
    fun2 /root/a.sh
    fun3 5
    [root@youxi1 ~]# sh e.sh hello
    hello
    /root/a.sh
    5
    

    (6).函数的参数

      在一个脚本当中,函数外的参数,函数可以直接调用,并且函数内的参数,只要运行过函数,外部也可以直接调用。

    [root@youxi1 ~]# vim f.sh
    #!/bin/bash
    num=5
    fun1() {
      num2=$[num*10]
    }
    fun1
    echo $num2
    [root@youxi1 ~]# sh f.sh
    50
    

      注意:脚本内的参数仅限脚本内使用

  • 相关阅读:
    Atitit.php  nginx页面空白 并返回500的解决
    Atitit.php  nginx页面空白 并返回500的解决
    Atitit .linux 取回root 密码q99
    Atitit .linux 取回root 密码q99
    atitit.农历的公式与原理以及农历日期运算
    atitit.农历的公式与原理以及农历日期运算
    Atitit.用户权限服务 登录退出功能
    Atitit.用户权限服务 登录退出功能
    atitit.atiOrm.js v2 q61 版本新特性.docx
    Atitit.报名模块的管理
  • 原文地址:https://www.cnblogs.com/diantong/p/11718794.html
Copyright © 2020-2023  润新知