shell脚本--创建函数

一、创建函数

  1. 第一种格式采用关键字function,后跟 分配给该代码块的函数名

  1. 第二种格式更接近于其他编程语言中定义函数的方式。

二、返回值

bash shell会把函数当作一个小型脚本,运行结束时会返回一个退出状态码。 有3种不同的方法来为函数生成退出状态码。

  1. 默认退出状态码
    • 在函数执行结束 后,可以用标准变量$?来确定函数的退出状态码。$?由最后一条语句的状态决定。

  1. 使用 return 命令
    • bash shell使用return命令来退出函数并返回特定的退出状态码。return命令允许指定一个 整数值来定义函数的退出状态码,从而提供了一种简单的途径来编程设定函数退出状态码。

三、使用函数输出(类似于定向输出)

  1. 可以用这种技术来获得任何类型的函数输出,并将其保存到变量中:

  • 这个命令会将dbl函数的输出赋给$result变量。

  1. read 命令输出了一条简短的消息来向用户询问输入值。bash shell脚本非常聪明,并不将其作为STDOUT 输出的一部分,并且忽略掉它。如果你用echo语句生成这条消息来向用户查询,那么它会与输 出值一起被读进shell变量中。

四、在函数中使用变量

  1. 向函数传递参数
    • 函数可以使用标准的参数环境变量来表示命令行上传给函数的参数。例如,函数名会在$0 变量中定义,函数命令行上的任何参数都会通过$1、$2等定义。也可以用特殊变量$#来判断传 给函数的参数数目。 在脚本中指定函数时,必须将参数和函数放在同一行,像这样:

五、在函数中处理变量

  1. 全局变量
    • 全局变量是在shell脚本中任何地方都有效的变量。如果你在脚本的主体部分定义了一个全局变量,那么可以在函数内读取它的值。类似地,如果你在函数内定义了一个全局变量,可以在脚本的主体部分读取它的值。

  1. 局部变量
    • 无需在函数中使用全局变量,函数内部使用的任何变量都可以被声明成局部变量。要实现这 一点,只要在变量声明的前面加上local关键字就可以了。

  • 也可以在变量赋值语句中使用local关键字:

六、向函数传数组参数

  1. 将数组变量当作单个参数传递的话,它不会起作用。

  1. 要解决这个问题,你必须将该数组变量的值分解成单个的值,然后将这些值作为函数参数使用。在函数内部,可以将所有的参数重新组合成一个新的变量。下面是个具体的例子。

七、从函数返回数组

  1. 从函数里向shell脚本传回数组变量也用类似的方法。函数用echo语句来按正确顺序输出单个 数组值,然后脚本再将它们重新放进一个新的数组变量中。

八、函数递归

  1. 局部函数变量的一个特性是自成体系。除了从脚本命令行处获得的变量,自成体系的函数不 需要使用任何外部资源。

九、创建库

  1. bash shell允许创建函数库文件,然后在多个脚本中引用该库文件。
  2. 使用函数库的关键在于source命令。source命令会在当前shell上下文中执行命令,而不是 创建一个新shell。可以用source命令来在shell脚本中运行库文件脚本。这样脚本就可以使用库 中的函数了。
  3. source命令有个快捷的别名,称作点操作符(dot operator)。要在shell脚本中运行myfuncs 库文件,只需添加下面这行:

十、在.bashrc 文件中定义函数

  1. 一个非常简单的方法是将函数定义在一个特定的位置,这个位置在每次启动一个新shell的时 候,都会由shell重新载入。最佳地点就是.bashrc文件。bash shell在每次启动时都会在主目录下查找这个文件,不管是交互式shell还是从现有shell中启动的新shell。
    •  直接定义函数

  • 读取函数文件

十一、shtool库下载及安装

  1. 下载
    • shtool软件包的下载 地址是:ftp://ftp.gnu.org/gnu/shtool/shtool-2.0.8.tar.gz
  2. 安装
    • 解压后,输入 ./confifgure ---- make  ---- make install
  3. shtool 库函数

  1. 使用库
    • 可以在命令行或自己的shell脚本中直接使用shtool函数

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值