Linux Shell--函数

打印 上一主题 下一主题

主题 901|帖子 901|积分 2703

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵占您的权益,请联系删除
  一、简介

Shell 函数是一段可以重复使用的代码块,通过定义函数可以避免代码重复,提高脚本的可读性和可维护性。
二、定义函数

在Shell脚本中定义函数的基本语法如下:
  1.  function_name() {
  2.      # 函数体
  3.  }
复制代码
大概使用更简便的语法:
  1.  function_name()(
  2.      # 函数体
  3.  )
复制代码
大概使用关键字function:
  1.  function function_name() {
  2.      # 函数体
  3.  }
复制代码
三、参数传递

函数可以接受参数,参数通过位置传递,使用$1, $2, ... 表示第一个、第二个参数等。
示例

  1.  [root@centos ~]# cat fun.sh
  2.  greet() {
  3.      echo "Hello, $1"
  4.  }
  5.  ​
  6.  greet "John Doe"
  7.  [root@centos ~]# bash fun.sh
  8.  Hello, John Doe
复制代码
四、返回值

函数通过return语句返回一个值。假如没有使用return,函数的退出状态将作为返回值。
示例

  1.  [root@centos ~]# cat fun.sh
  2.  add() {
  3.      echo $(( $1 + $2 ))
  4.  }
  5.  ​
  6.  result=$(add 3 5)
  7.  echo "Result is $result"
  8.  [root@centos ~]# bash fun.sh
  9.  Result is 8
复制代码
五、作用域

变量在函数内部定义,只对函数可见,外部定义的变量在函数内部不可见,除非使用global关键字。
示例

  1.  [root@centos ~]# cat fun.sh
  2.  my_var="I'm global"
  3.  ​
  4.  myfunc() {
  5.      local local_var="I'm local"
  6.      echo $local_var
  7.  }
  8.  ​
  9.  myfunc
  10.  echo $local_var     # 这将不会打印任何内容,因为local_var只在函数内部可见
  11.  [root@centos ~]# bash fun.sh
  12.  I'm local
复制代码
六、递归函数

Shell函数可以调用自身,实现递归
示例

  1.  [root@centos ~]# cat fun.sh
  2.  factorial() {
  3.      if [ $1 -le 1 ]; then
  4.          return 1
  5.      fi
  6.      local prev=$(factorial $(( $1 - 1 )))
  7.      echo $(( $1 * prev ))
  8.  }
  9.  ​
  10.  echo $(factorial 5)
  11.  [root@centos ~]# bash fun.sh
  12.  0
复制代码
七、函数作为参数

可以将函数作为参数传递给另一个函数。
示例

  1.  [root@centos ~]# cat fun.sh
  2.  apply_to_numbers() {
  3.      local func=$1; shift
  4.      for num in "$@"; do
  5.          $func $num
  6.      done
  7.  }
  8.  ​
  9.  square() {
  10.      echo $(( $1 * $1 ))
  11.  }
  12.  ​
  13.  apply_to_numbers square 1 2 3 4
  14.  [root@centos ~]# bash fun.sh
  15.  1
  16.  4
  17.  9
  18.  16
复制代码
八、注意事项



  • 函数名应该只管简便且描述性强。
  • 避免使用保留字作为函数名。
  • 函数内部定义的变量应该使用local关键字,以避免影响外部变量。
总结

Shell函数是编写高效、可维护脚本的重要工具。合理使用函数可以大大提高脚本的复用性和可读性。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

商道如狼道

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表