Bash Shell语法之三函数简介

 Bash Shell语法之三函数简介

一、什么是Bash函数

像其他编程语言一样,Shell 也支持函数。Shell函数必须先定义后使用。函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。

二、Bash函数定义格式

[ function ] fun () {

        函数体

[ retrun n ]

}

  说明:

    1、可以带function fun()  定义,也可以直接fun() 定义,不带任何参数。

    2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)

三、函数返回值

函数返回值,可以用return语句;如果不加,会将最后一条命令运行结果作为返回值。Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值(非0)表示失败。

四、函数参数

在函数种调用函数参数的方式,同脚本中调用脚本参数的方式:位置参数 $1 $2 ……$# $* $@

五、函数调用

函数名出现的地方,会被自动替换为函数;要执行函数中的命令必须在脚本中或命令行上调用函数

六、函数实例

1、

1.png

2、2.png

3、函数定义实例

4.png

5.png

  从上面这个例子的结果我们可以得到几点结论:

         1、必须在调用函数地方之前,声明函数,shell脚本是逐行运行。不会像其它语言一样先预编译。一次必须在使用函数前先声明函数。所以第一行报错。

         2total=$( fSum 3 2);  通过这种调用方法,我们清楚知道,在shell 单括号里面可以是命令语句。 因此,我们可以将shell中函数,看作是定义一个新的命令,它是命令,因此 各个输入参数直接用 空格分隔一次,命令里面获得参数方法可以通过:$0…$n得到。 $0代表函数本身。

         3、函数返回值,只能通过$? 系统变量获得,直接通过=获得是空值。其实,我们按照上面一条理解,知道函数是一个命令,在shell获得命令返回值,都需要通过$?获得。

4、函数作用域实例

  6.png

7.png

  我们一起来分析下上面这个实例,可以得到如下结论:

  1. 定义函数可以与系统命令相同,说明shell搜索命令时候,首先会在当前的shell文件定义好的地方查找,找到直接执行。

  2. 需要获得函数值:通过$?获得

  3. 如果需要传出其它类型函数值,可以在函数调用之前,定义变量(这个就是全局变量)。在函数内部就可以直接修改,然后在执行函数就可以读出修改过的值。

  4. 如果需要定义自己变量,可以在函数中定义:local 变量= ,这时变量就是内部变量,它的修改,不会影响函数外部相同变量的值

原创文章,作者:wxdz_2004(古雨秋),如若转载,请注明出处:http://www.178linux.com/4067

(0)
上一篇 2015-05-11 12:01
下一篇 2015-05-11 12:21

相关推荐

  • ☞{ 编译内核;自制linux; }

    编译内核、自制linux 自制简单的linux 前提约定 CentOS 6.8 , Kernel-2.6.32-642.el6.x86_64 基于GRUB – 0.97 / 分区与 boot 分区独立, /boot 分区 100M+ ,/ 根分区看具体需求,此处为 1G Vmware 12.1,新建一个Li…

    Linux干货 2016-09-15
  • 学习目标

    先把落下的课补上……

    Linux干货 2016-10-31
  • Linux的哲学思想

    Linux的哲学思想 一切皆文件  几乎把所有的资源系统抽象为文件形式:包括硬件设备,甚至通信接口等 由众多功能单一的程序组成:一个程序只做一件事,并且做好;组合小程序完成复杂任务  力求使程序精简凝练,出现地完成最核心的需求;尽量避免使其膨胀成为一个臃肿的程序,致使大部分代码很少被需要和执行。 小程序易于理解,维护,消耗系统资源较少,易…

    Linux干货 2017-07-03
  • MariaDB基础

    MariaDB基础 关系型数据库的基础概念: 1)数据类型:作用:存储格式、数据范围、所能参与的运算、排序方式         字符型:         定长字符型:CHAR(#),BIARNY(#)…

    Linux干货 2016-11-07
  • Linux终端类型

    前言     终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。而linux的终端类型有物理终端,虚拟终端,串行终端,伪终端。  1.物理终端  /dev/console     在linux系统中,计算机显示器通常被称为控制台终端(console)。系统控制台,和系统相关…

    Linux干货 2016-10-14
  • 第三周(3):课堂练习与作业

    课堂练习: 1、找出ifconfig命令结果中本机的所有IPv4地址 [root@centos6 ~]# ifconfig | tr -cs '[0-9].' '\n'|sort -ut. -k3n 127.0.0.1 10.1….

    Linux干货 2016-08-08