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脚本是逐行运行。不会像其它语言一样先预编译。一次必须在使用函数前先声明函数。所以第一行报错。

         2、total=$( 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)
wxdz_2004(古雨秋)wxdz_2004(古雨秋)
上一篇 2015-05-11 12:01
下一篇 2015-05-11 12:21

相关推荐

  • 基于Cobbler实现多版本操作系统自动部署

    前言     在生产环境中,当需要批量部署几十甚至上百台服务器时,实现自动化安装操作系统尤为重要,按照传统的光盘引导安装是不可想象的;此前我们通过pxe+kickstart简单实现了自动化安装,但只能实现单一版本安装,当需要部署不同版本或不同引导模式(BIOS、EFI)时,此种方式就不够灵活。而Cobbler正是为了解…

    Linux干货 2015-08-11
  • 文件系统

            文件系统表现为单个统一的层次结构:从目录/开始并通过若干数量的子目录继续向下扩展,/也叫做根目录。这种单一的层次系统和 Windows 的不一样,后者的分区有专门的名字空间。        &n…

    Linux干货 2016-02-28
  • 关于大型网站技术演进的思考(五):存储的瓶颈(5)

    原文出处: 夏天的森林    上文里我遗留了两个问题,一个问题是数据库做了水平拆分以后,如果我们对主键的设计采取一种均匀分布的策略,那么它对于被水平拆分出的表后续的查询操作将有何种影响,第二个问题就是水平拆分的扩容问题。这两个问题在深入下去,本系列就越来越技术化了,可能最终很多朋友读完后还是没有找到解决实际问题的启迪,而且我觉得…

    Linux干货 2015-03-11
  • nginx实现代理服务器功能

    nginx实现代理服务器功能1: #环境: 172.16.253.223 #CentOS7.3,安装nginx作为代理服务器 172.16.253.224 #CentOS7.3,安装httpd作为服务器 172.16.253.188 #CentOS6.8,咱庄httpd作为图片服务器 #223主机: yum install nginx vim /etc/ng…

    Linux干货 2017-06-28
  • Ansible中文权威

    福利贴 运维神器 Ansible 本土化在际,除了每日分享,定期更新外,还有大虾不定期解惑,更多福利可关注  http://www.178linux.com/doc/ansible/  或 扫描二维码入( 372011984 )群关注.

    Linux干货 2015-08-13
  • 三种方案实现tomcat反代服务

    要求: 分别实现这三种架构:    1、nginx + tomcat cluster    2、httpd(proxy_http_module)+tomcat cluster    3、httpd(proxy_ajp_module)+tomcat cluster;   &nbsp…

    2017-07-03