加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱资讯网 (https://www.52junxun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

每天三分钟搞定linux shell脚本25 shell函数的基本使用

发布时间:2022-12-07 10:59:44 所属栏目:Unix 来源:
导读:  代码重用的时候,通过函数非常方便。在函数代码块中实现逻辑,在需要使用的时候调用该函数,建立脚本:

  #/bin/bash
  function echo1 {
   echo "This is function 1"
  }
  echo2() {
  代码重用的时候,通过函数非常方便。在函数代码块中实现逻辑,在需要使用的时候调用该函数,建立脚本:
 
  #/bin/bash
  function echo1 {
      echo "This is function 1"
  }
  echo2() {
      echo "This is function 2"
  }
  echo1
  echo2
  运行后输出:
 
  This is function 1
  This is function 2
  1
  2
  shell中的函数必须先定义后使用,否则就会报错。同时函数名也必须是唯一的,如果定义了两个相同名字的函数,后面的会覆盖前面的。
 
  注意函数体的左花括号{和后面的命令之间必须有空格或换行,如果将最后一条命令和右花括号}写在同一行,命令末尾必须有;号。
 
  UNIX Shell函数_unix shell编程_unix shell编程 pdf
 
  之前我们在使用脚本的时候也给脚本传参过,向函数传递参数以及函数中处理参数的过程跟这个相同。比如用$#表示参数的总个数,用$1表示第一个参数等等。
 
  1 传递普通变量
 
  向函数传递普通变量的时候只要在调用的时候把参数写在后面即可,举例如下:
 
  #/bin/bash
  function process_param {
      if [ $# -eq 0 ] || [ $# -gt 2 ];then
          echo "-1"
      elif [ $# -eq 1 ];then
          echo $[ $1 * 10 ]
      else
          echo $[ $1 + $2 ]
      fi
  }
  value=$(process_param)
  echo "value of process_param is $value"
  value=$(process_param 1)
  echo "value of process_param 1 is $value"
  value=$(process_param 1 2)
  echo "value of process_param 1 2 is $value"
  运行后结果为:
 
  value of process_param is -1
  value of process_param 1 is 10
  value of process_param 1 2 is 3
  2传递数组
 
  向函数传递数组的时候,如果以变量名的形式传参UNIX Shell函数,函数内部将只能拿到数组的第一个元素。举例如下
 
  #/bin/bash
  function show_array {
     echo "num is array is $@"
     array=$1
     echo "array is ${array[*]}"
  }
  array_source=(1 2 3)
  echo "array_source is ${array_source[*]}"
  show_array $array_source
  运行后结果为:
 
  array_source is 1 2 3
  num is array is 1
  array is 1
  如果想要传递整个数组的话,在函数调用处和函数内部都要使用echo语句,举例如下:
 
  #/bin/bash
  function show_array {
      array=($(echo "$@"))
      for value in ${array[*]}
      do
          echo "value is $value"
      done
  }
  test_array=(1 2 3)
  echo "array_source is ${test_array[*]}"
  show_array $(echo ${test_array[*]})
  运行后结果如下:
 
  array_source is 1 2 3
  value is 1
  value is 2
  value is 3
  通过echo语句可以传递整个数组了。
 

(编辑:我爱资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章