zoukankan      html  css  js  c++  java
  • shell 函数

    一 函数介绍

    1.什么是函数

    函数就是用来盛放一组代码的容器,函数内的一组代码完成一个特定的功能,称之为一组代码块,调用函数便 可触发函数内代码块的运行,这可以实现代码的复用,所以函数又可以称之为一个工具

    2.为何要用函数
    # 1、减少代码冗余 
    # 2、提升代码的组织结构性、可读性 
    # 3、增强扩展性
    

    二 函数的基本使用

    具备某一功能的工具=>函数 
    事先准备好哦工具=>函数的定义 
    遇到应用场景,拿来就用=>函数的调用 
    所以函数的使用原则:先定义,后调用
    
    1.定义函数
    # 语法: [ function ] funname [()] { 
          命令1; 
          命令2;
          命令3; 
          ... 
          [return int;] 
    }
    
    # 示例1:完整写法 
    function 函数名() { 
          函数要实现的功能代码 
    }
    
    # 示例2:省略关键字(),注意此时不能省略关键字function
    function 函数名 { 
          函数要实现的功能代码 
    }
    
    # 示例3:省略关键字function 
    函数名() { 
          函数要实现的功能代码 
    }
    
    2.调用参数
    # 语法:
    函数名 # 无参调用 
    函数名 参数1 参数2 # 有参调用
    
    # 示例 
    function test1(){ 
          echo "执行第一个函数" 
    }
    
    function test2 { 
          echo "执行第二个函数" 
    }
    
    test3(){ 
          echo "执行第三个函数" 
    }
    
    # 调用函数:直接引用函数名字即调用函数,会触发函数内代码的运行 
    test1 
    test2 
    test3
    
    

    三 函数参数

    如果把函数当成一座工厂,函数的参数就是为工厂运送的原材料

    1.调用函数时可以向其传递参数
    # 调用函数test1,在其后以空格为分隔符依次罗列参数 test1 111 222 333 444 555
    
    # 在函数体内部,通过 $n 的形式来获取参数的值,
    # 例如, $1 表示第一个参数, $2 表示第二个参数
    ...当n>=10时,需要使用 ${n} 来获取参数
    cat b.sh function test1(){
          echo "...start..." 
          echo $1 
          echo $2
          echo $3 
          echo "...end..." 
    }
    test1 111 222 333 444 555 # 为函数体传参
    
    ./b.sh
    ...start... 
    111
    222 
    333 
    ...end...
    
    # :在脚本内获取脚本调用者在命令行里为脚本传入的参数,同样使用的是$n,不要搞混
    cat b.sh 
    function test1(){ 
          echo "...start..." 
          echo "这是函数内:$1" 
          echo "这是函数内:$2" 
          echo "这是函数内:$3" 
          echo "...end..." }
    
    # test1 111 222 333 444 555
    test1
    echo "这是脚本级的参数$1" 
    echo "这是脚本级的参数$2" 
    echo "这是脚本级的参数$3"
    
     ./b.sh xxx yyy zzz mmm nnn
    ...start... 
    这是函数内: 
    这是函数内: 
    这是函数内: 
    ...end... 
    这是脚本级的参数xxx 
    这是脚本级的参数yyy 
    这是脚本级的参数zzz
    
    2.$*和$#区别

    1、当$*和$@没有被引号引用起来的时候,它们确实没有什么区别,都会把位置参数当成一个个体。

    2、"$" 会把所有位置参数当成一个整体(或者说当成一个单词),如果没有位置参数,则"$"为空,如 果有两个位置参数并且分隔符为空格时,"$*"相当于"$1 $2"

    3、"$@" 会把所有位置参数当成一个单独的字段,如果没有位置参数,则"$@"展开为空(不是空字符串, 而是空列表),如果存在一个位置参数,则"$@"相当于"$1",如果有两个参数,则"$@"相当于"$1" "$2"等等

    四 函数的返回值

    如果把函数当成一座工厂,函数的返回值就是工厂的产品,在函数内使用return关键字返回值,函数内
    可以有多个return,但只要执行一个,整个函数就会立刻结束

    需要注意的是shell语言的函数中,通常用return返回函数运行是否成功的状态,0代表成功,非零代表失
    败,需要用$?获取函数的返回值

    1、如果函数内没有return,那么将以最后一条命令运行结果(命令运行成功结果为0,否则为非
    0)作为返回值

    如果函数内有return,那么return后跟的只能是整型值并且范围为0-255,用于标识函数的运
    行结果是否正确, 与C 语言不同,shell 语言中 0 代表 true,0 以外的值代表 false

  • 相关阅读:
    ESRI Shapefiles (SHP)
    Python与开源GIS:在OGR中使用SQL语句进行查询
    [推荐]网店代销的卖家,你的宝贝名称修改了吗?
    怎么把经纬度转换成标准的度分秒单位
    如何提高淘宝流量
    十八种方法提升淘宝店流量
    mysql备份数据库几种方法
    Linux查看文件编码格式及文件编码转换
    MySQL 修改字段类型或长度
    mysql外键使用和级联
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/14030605.html
Copyright © 2011-2022 走看看