自学Linux Shell16.1-函数概念
16.1-函数概念
编写比较复杂的shell脚本时,完成具体任务的代码可能需要重复使用。bash shell提供满足这种要求的特性。
函数是被赋予名称的脚本代码块,可以在代码的任意位置重用。每当需要在脚本中使用这样代码块时,只需引用该代码块被赋予的函数名称。
1. 创建函数
在bash shell脚本中创建函数可以使用两种格式。
一种格式是使用关键字function,后跟代码块的函数名:
- function name {
- commands
- }
- name属性定义了该函数的唯一名称。脚本中自定义的每个函数都必须赋予唯一的名称。
- commands是组成函数的一条或多条bash shell命令。当调用函数是,就像在普通脚本一样,bash shell按照各条命令在函数中出现的顺序依次执行。
另一个格式,更接近一般编程语言定义函数的方式:
- name() {
- commands
- }
- 函数名之后的空白园括号表明这是在定义函数。
- 该格式的函数命名规则与前面的shell脚本函数格式相同。
2. 使用函数
- 函数名func1每次被引用时,bashshell返回func1函数的定义并执行该函数定义的全部名
- 函数定义不一定位于shell脚本的起始部分,但是应当小心使用。如果在函数定义之前使用函数,会得到错误消息
- 使用函数前,需要先定义函数
- 函数的命令需要注意。每个函数名必须唯一,否则会出问题
- 如果重新定义函数,那么新定义将取代函数原先的定义,这不会引发错误消息
3.函数返回值
bashshell将函数看作小型脚本,并以退出状态结束。函数退出的状态有3中生成方式。
3.1 默认退出状态(不使用)
默认情况下,函数的退出状态是函数的最后一条命令返回的退出状态。函数执行完毕之后,可以使用标准变量$?来确定函数的退出状态
该函数的退出状态是2,因为最后一条命令执行失败。但无法得知函数的其他命令是否成功执行。
由于函数结尾是能够完全成功执行的echo语句,虽然有一条命令运行失败,但是函数的退出状态仍然是0。所以,使用函数的默认退出状态是一种危险的做法。
3.2 使用return命令
bash shell使用return命令以特定退出函数。return命令可以使用单个整数值来定义函数退出状态,提供一种通过编程设置函数退出状态的简单方法。
使用这种方法返回数据时,必须注意避免两个容易发生的错误:
- 在函数完成后尽快提取返回值
- 退出状态的取值范围是0~255
如果想要返回更大的整数值或字符串,那么不要使用这种返回值方法。
3.3 使用函数输出
函数的输出也可以捕获并存放到shell变量中。
- 这种方法可以从函数获取任意类型的输出并给出变量赋值:result=`db1`。这条命令将函数db1的输出赋予shell变量$resutl。
- 这个方法也可以返回浮点数和字符串值,所以这种方法能够非常灵活地从函数返回数据。

自学Linux Shell16.1-函数概念的更多相关文章
- 自学Linux Shell16.4-在命令行上使用函数
点击返回 自学Linux命令行与Shell脚本之路 16.4-在命令行上使用函数 脚本函数不仅可以用作shell脚本命令,也可以用作命令行界面的命令.一旦在shell中定义了函数,可以从系统的任意目录 ...
- 自学Linux Shell16.2-函数中使用变量
点击返回 自学Linux命令行与Shell脚本之路 16.2-函数中使用变量 1. 向函数传递参数 函数可以使用标准参数环境变量来表示命令行传递给函数的参数.例如, 函数名在变量$0中定义,函 ...
- 自学Linux Shell16.3-函数递归+创建库
点击返回 自学Linux命令行与Shell脚本之路 16.3-函数递归+创建库 1. 函数递归 递归调用函数是指函数调用自身进行求解. 通常,递归函数有基值,函数最终递推到达该值. 许多高级数学算法使 ...
- 自学Linux命令行与Shell脚本之路
自学Linux命令行与Shell脚本之路[第一回]:初识Linux 1.1 自学Linux Shell1.1-Linux初识 1.2 自学Linux Shell1.2-Linux目录结构 1.3 ...
- 自学Linux Shell6.1-环境变量概念
点击返回 自学Linux命令行与Shell脚本之路 6.1-环境变量概念 环境变量 在Linux中,很多程序和脚本都通过环境变量来获取系统信息.存储临时数据和配置信息: bash shell使用环境变 ...
- 自学Linux Shell1.3-Linux文件系统
点击返回 自学Linux命令行与Shell脚本之路 1.3-Linux文件系统 文件系统是文件存放在磁盘等存储设备上的组织方法.Linux系统能支持多种目前流行的文件系统,如EXT2. EXT3. F ...
- 自学Linux Shell9.2-基于Red Hat系统工具包存在两种方式之一:RPM包
点击返回 自学Linux命令行与Shell脚本之路 9.2-基于Red Hat系统工具包存在两种方式之一:RPM包 本节主要介绍基于Red Had的系统(测试系统centos) 1. 工具包存在两种方 ...
- 自学Linux Shell9.4-基于Red Hat系统工具包存在两种方式之二:源码包
点击返回 自学Linux命令行与Shell脚本之路 9.4-基于Red Hat系统工具包存在两种方式之二:源码包 本节主要介绍基于Red Had的系统(测试系统centos) 1. 工具包存在两种方式 ...
- 自学Linux Shell1.1-Linux初识
点击返回 自学Linux命令行与Shell脚本之路 1.1-Linux初识(架构.内核.shell) 1. Linux架构 Linux系统一般有4个主要部分:内核.shell.文件系统和应用程序.(有 ...
随机推荐
- WPF loading遮罩层 LoadingMask
原文:WPF loading遮罩层 LoadingMask 大家可能很纠结在异步query数据的时候想在wpf程序中显示一个loading的遮罩吧 今天就为大家介绍下遮罩的制作 源码下载 点击此处 先 ...
- C# 实现表单的自动化测试<通过程序控制一个网页>
学历代表你的过去,能力代表你的现在,学习代表你的将来 十年河东,十年河西,莫欺少年穷 学无止境,精益求精 C# 实现表单的自动化测试,这标题看着就来劲!那么,如何通过C#程序控制一个网页呢? 在此,以 ...
- Python基础(函数,函数的定义,函数的调用,函数的参数,递归函数)
1.函数 我们知道圆的面积计算公式为: S = πr2 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需要计算3个不同大小的圆的面积: r1 = 12.34 r2 = 9.08 r3 = ...
- 详解javascript中this的工作原理
在 JavaScript 中 this 常常指向方法调用的对象,但有些时候并不是这样的,本文将详细解读在不同的情况下 this 的指向. 一.指向 window: 在全局中使用 this,它将会指向全 ...
- asp.net mvc接收安卓post的json字符串
筛选器: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syst ...
- linux-shell-引用-命令替换-命令退出状态-逻辑操作符
命令替换:bash7步扩展的之一 嵌套 这里没什么意义 退出状态可以参与逻辑判断 表达式 算数表达式和条件表达式,逻辑表达式 查看passwd命令比,避免用户捕获输入密码的接口 这种方式就可以直接输 ...
- 【2016.4.6】结对编程 终章 THE END
- 12.26daily_scrum
尽管最近是众多大作业集中爆发deadline的紧要关头,队员们依旧热情高涨,投入良多,纷纷为产品发布出谋划策. 具体工作: 小组成员 今日任务 工作时间 李睿琦 软件调试过程总结 2 左少辉 滑锁密码 ...
- 20135323符运锦----LINUX第三次实践:程序破解
程序破解 一.掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 ①NOP:NOP指令即"空指令".执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行N ...
- javaBean中 字符串 转 date 类型转换
1-----创建javabean 代码如下 package BeanUtils; import java.util.Date; public class Admin { private String ...