SHELL编程-函数


1. 函数定义

shell允许将一组命令集或语句形成一个可用块,这些块称为shell函数
    定义函数的格式:

    function-name (){
        command1
        ........
    }
    或 function function-name(){ #函数名前面多了个function关键字
        command1
        ........
    }


2.函数调用
    以下是一个函数的脚本实例:
    #!/bin/bash
    #hello
    function hello(){      #声明函数
      echo "Hello!"    #函数的主体,输出"Hello!"
    }              #函数结束
    hello            #调用函数


3.参数传递
  向函数传递参数就像在脚本是使用变量位置$1,$2,$3...$9
  以下是一个传递参数的实例:
  #!/bin/bash
  #hellofun
  function hello(){
      echo "Hello! The first parameter is '$1'."
  }
  hello good
  #该脚本执行的结果是: Hello! The first parameter is 'good'.


4.函数文件
  保存函数的文件,用以上的例子写成一个函数文件如下:
  #!/bin/bash
  #hellofunction
  function hello(){
    echo "Hello!"
    return 1
  }
  上面的hellofunction文件就是一个函数文件,可通过另一个脚本来调用
  #!/bin/bash
  #hellof
  . hellofunction #注意点和hellofunction之间有个空格
  hello


5.载入和删除
  用set查看已载入的函数
  用unset function-name 取消载入
  举例如下:
#!/bin/bash
  #hellof
  . hellofunction
  unset
  hello  #因为已经取消载入。。所以会出错

 

6.从调用函数中返回

当函数完成处理或希望函数基于某一测试语句返回时,可做两种处理:

1) 让函数正常执行到函数末尾,然后返回脚本中调用函数的控制部分。

2) 使用r e t u r n返回脚本中函数调用的下一条语句,可以带返回值。0为无错误,1为有错误。

这是可选的,与最后状态命令报表例子极其类似。其格式为:

return从函数中返回, 用最后状态命令决定返回值。

return 0 无错误返回。

return 1 有错误返回


7.函数返回值测试
  #!/bin/bash
  #hellofun
  function hello(){
    echo "Hello! The first parameter is '$1'."
  }
  hello
  echo $?  #输出返回的状态值(一般成功是返回0,其它值为失败)

相关内容