函数是一个脚本代码块,你可以对它进行自定义命名,并且可以在脚本中任意位置使用这个函数。如果想要这个函数,只要调用这个函数的名称就可以了。使用函数的好处在于模块化以及代码可读性强。

(1).函数的创建语法

  函数的创建方法一:

function 函数名称 {
命令
}

  函数的创建方法二:

函数名称() {
命令
}

  注意:函数名称在当前脚本必须唯一。

  调用函数的方法:

函数名称 参数1 参数2 ......

  调用函数时可以传递参数,函数中使用$1、$2......来引用传递的参数。

(2).函数的使用实例

  实例1:

[root@youxi1 ~]# vim a.sh
#!/bin/bash
function fun1 {
echo "hello world"
} fun2() {
echo $[$1+$2]
} fun1
fun2 1 2
[root@youxi1 ~]# sh a.sh
hello world
3

  实例2:如果存在相同名称的函数,以最后一个为准

[root@youxi1 ~]# vim b.sh
#!/bin/bash
function fun1 {
echo "hello world"
} fun1() {
echo "This is rewrite"
} fun1
[root@youxi1 ~]# sh b.sh
This is rewrite

(3).return返回值

  使用return命令来退出函数并返回特定的退出码($?)

[root@youxi1 ~]# vim c.sh
#!/bin/bash
fun1() {
echo "return 3"
return 3
echo "why?"
} fun1
[root@youxi1 ~]# sh c.sh
return 3
[root@youxi1 ~]# echo $?
3

  注意:return一般是在函数的最后一行,因为一旦执行return命令,该函数后面的命令就不执行了。

  return与exit的区别:return和exit都可以返回退出码,但是不同的是,return是退出函数,而exit是退出整个脚本。

(4).函数值赋给变量

  如下方实例中显示,此时的函数就相当于一个命令,需要使用$()或``调用。

[root@youxi1 ~]# vim d.sh
#!/bin/bash
fun1() {
read -p "Input a number:" num
echo $[num*5]
} num2=`fun1`  #也可以是$(fun1)
echo $num2
[root@youxi1 ~]# sh d.sh
Input a number:2
10

(5).外部参数传入函数

  前面已经提到过,调用函数可以在后面跟随参数,函数内部可以使用$n的形式调用。

[root@youxi1 ~]# vim e.sh
#!/bin/bash
fun1() {
echo $1
} fun2() {
echo $1
} fun3() {
echo $1
} fun1 $1
fun2 /root/a.sh
fun3 5
[root@youxi1 ~]# sh e.sh hello
hello
/root/a.sh
5

(6).函数的参数

  在一个脚本当中,函数外的参数,函数可以直接调用,并且函数内的参数,只要运行过函数,外部也可以直接调用。

[root@youxi1 ~]# vim f.sh
#!/bin/bash
num=5
fun1() {
num2=$[num*10]
}
fun1
echo $num2
[root@youxi1 ~]# sh f.sh
50

  注意:脚本内的参数仅限脚本内使用

shell中函数的使用的更多相关文章

  1. shell 中函数放回字符串问题

    shell 中函数放回字符串问题 shell 中不可以直接 return 字符串 ,可以return 数字.如果要return 字符串 改为 echo "hello world" ...

  2. shell中函数返回值

    1.前言 快半年没有写博客了,荒废了很久,工作中的杂事太多,自己越来越懒了.为了鞭策自己成长,还是要坚持写写博客,记录自己的成长. 2.shell函数介绍 语法: [ function ] funna ...

  3. shell从函数文件里调用函数

    碰到一个shell中函数调用的小问题,记录一下. shell中函数有三种调用方式,一种是在文件前面定义函数,然后在以下直接调用:一种是通过加载shell,在shell中直接调用:第三种是将函数写入文件 ...

  4. linux shell自定义函数(定义、返回值、变量作用域)介绍

    http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell ...

  5. Linux Shell 之 Shell中的函数调用

    说起函数调用,相信大家也不会陌生,然而对于初学Shell的我来说,Shell中函数调用方式却有点让我不太习惯,自己也走了不少的弯路,因为传递参数时出了一个很“自然”的错误,也让我吃了不少的苦头,所以总 ...

  6. Linux shell 自定义函数

    一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带functi ...

  7. shell进阶函数

    函数的定义和用途 函数function是由若干条shell命令组成的语句块,实现shell代码的重用和模块化编程. 函数和shell程序的异同点 它与shell程序形式上是相似的,不同的是它不是一个单 ...

  8. shell获取函数的返回值

    背景:定义了一个函数,比对本地和线上服务器集群数量差别,想要获取不同集群的个数.shell和其他语言的函数返回值还是差别挺大的.   定义一个函数 functionname(){      操作内容 ...

  9. linux shell 自定义函数(定义、返回值、变量作用域)介绍

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...

随机推荐

  1. Windos7 安装 thumbor 遇到的python版本问题

    (py36) C:\Users\Administrator>thumbor --port= Traceback (most recent call last): File , in _run_m ...

  2. NumPy基本操作快速熟悉

    NumPy 是 Python 数值计算非常重要的一个包.很多科学计算包都是以 NumPy 的数组对象为基础开发的. 本文用代码快速过了一遍 NumPy 的基本操作,对 NumPy 整体有一个把握.希望 ...

  3. Btn 样式

    .btn { display: inline-block; padding: 6px 12px; margin-bottom: 0; font-size: 14px; font-weight: nor ...

  4. es6 | 新增语法 | 总结

    电梯 原文 https://www.jianshu.com/p/5f40c43c6f85 重点: 遍历map结构 正则扩展 at相当于charAt() ,可以识别中文normarize()includ ...

  5. RabbitMQ六种队列模式-路由模式

    前言 RabbitMQ六种队列模式-简单队列RabbitMQ六种队列模式-工作队列RabbitMQ六种队列模式-发布订阅RabbitMQ六种队列模式-路由模式 [本文]RabbitMQ六种队列模式-主 ...

  6. MongoDB 聚合查询报错

    1.Distinct聚合查询报错 db.users.distinct("uname") db.runCommand({"distinct":"user ...

  7. 02_搭建HTTP客户端与服务器(数通华为)

    1.选择客户端和服务端: 2.服务端创建HTTP目录: 3.客户端访问下载:

  8. RookeyFrame 整个运行流程

    准备开始整理一下这个项目的整体框架,很久没研究这个框架了,心里还是念着的,今儿乘有时间弄一下. 一丁点建议: 先自己一个一个的搬作者的类库,这样就能很好的理解作者的项目结构 每搬一个类库都运行一下哦, ...

  9. javascript冒泡排序 至少比较N(N-1)/2次;

    <script type="text/javascript"> function get(){ var num = [10,5,2,1,3,6,4,7,9,8]; va ...

  10. A@[G!C]%008

    A@[G!C]%008 A Simple Calculator 细节题. B Contiguous Repainting 最后只要有连续\(K\)个鸽子同色就可以构造方案,枚举+前缀和 C Tetro ...