• shell 函数


    创建函数:

    注意:大括号前有空格

    格式1:

    function  name  {

            commands

    }

    格式2: 

    name()   {

            commands

    }

     

     

     函数的返回值:

     bash shell会把函数当作一个小型脚本,运行结束时会返回一个退出状态码

    $? 查看退出码

    注意:$? 是按照函数语句是否成功运行来判断的

     

     

     

     return 返回指定的退出状态码

    return的使用方法:

    • 函数结束就取返回值
    • 退出状态码为整数
    • 退出返回码的范围 0-255

    使用函数输出

    可以将函数的值赋值给变量:

    仅有一个值时:

     

     有多个值时:仅仅只会获取第一个数据

    在函数中使用变量

    1.向函数传递参数:向函数传递参数时,需要手动传参

     

     2.在函数中处理变量

    • 全局变量
    • 局部变量

    2.1全局变量:

    默认情况下,你在脚本中定义的任何变量都是全局变量。在函数外定义的变量可在函数内正

    常访问。

     2.局部变量

    local  变量名

     

     向函数传数组参数

    第一种情况:函数在外部直接调用,传参数时需要将参数重新组合成一个新的变量

     

     第二种情况:在函数内部调用,可以直接使用

     

    函数返回数组

    函数用 echo 语句来按正确顺序输出单个数组值,然后脚本再将它们重新放进一个新的数组变量中

     

    创建库

    库的作用:方便多个脚本使用同一段代码

    source命令是使用函数库的关键,source命令会在当前shell上下中执行命令,而不是创建一个新shell。可以用source命令来在shell脚本中运行库文件脚本。这样脚本就可以使用库中的函数了。source命令有个快捷的别名,称作点操作符dot operator

    格式 :                  .  文件路径 (注意空格)

    步骤:

    1. 创建一个公用库文件
    2. 在脚本开头中导入库文件  格式为:    .  ./库文件名
    3. 即可使用库文件中的函数

    新建一个 myfunce文件,并在里面输入4个函数

    然后再脚本文件输入这4条语句

     查看运行结果:

    在.bashrc 文件中定义函数

    函数放在。bashrc启动文件中,使得每次启动一个新shell时,都会由shell重新载入

    创建方法:

    • 直接在文件末尾编写函数
    • 导入函数文件中的函数

    1.文件中编写函数:

     

     2.导入函数文件中的函数

    .  路径

     

    GNU shtool shell 脚本的安装

     先下载压缩文件:ftp://ftp.gnu.org/gnu/shtool/shtool-2.0.8.tar.gz

    把文件传输到Linux中

    解压该文件: tar -zxvf shtool-2.0.8.tar.gz

    配置环境:命令行输入
    1. ./configure
    2. make             make命令负责构建shtool库文件
    3. make test      make test 测试这个库
    4. make install(root用户下)安装这个库

     库函数的使用:

    格式:shtool [选项] [函数 [选项] [参数]]

     

  • 相关阅读:
    git与Github命令行使用教程
    圣杯布局和双飞翼布局
    【数学】leetcode 119. 杨辉三角 II
    Linux_包管理_apt和apt-get、apt upgrade会自动升级内核
    数据网格(Data Mesh)是什么?
    看完这一篇教你学会Zookeeper和Dubbo,安装下载使用快速上手
    Stable Diffusion 模型分享:Henmix_Real(人像、真实、写真、亚洲面孔)
    Effective C++看书笔记(4):设计与声明
    【21学习挑战赛——华为OD机试JAVA】
    centos7中supervisor+django高版本部署sqlite3问题
  • 原文地址:https://blog.csdn.net/qq_45303986/article/details/126868605