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

(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. Redis持久化 - RDB和AOF

    原文:https://segmentfault.com/a/1190000016021217 一.持久化的作用 1. 什么是持久化 持久化(Persistence),即把数据(如内存中的对象)保存到可 ...

  2. 用Java的大整数类BigInteger来实现大整数的一些运算

    关于BigInteger的构造函数,一般会用到两个: BigInteger(String val); //将指定字符串转换为十进制表示形式: BigInteger(String val,int rad ...

  3. 如何测试Web服务.1

    一.什么是web服务  web服务在简单术语中可被定义为通过安装了特定设备或服务器到另一装置或客户端应用程序通过WWW彼此通信后的应用程序(万维网)提供的服务. Web服务通常在计算机网络的应用层上使 ...

  4. 前端性能----从输入URL开始到返回数据的中间经历过程

    这是一个古老的问题,即我们输入URL后按下回车到网页测呈现都发生了什么? 首先来看一张图: 表示了数据从源端到目的端的封装和拆解过程 预处理URL URL格式:  以http为例: http://ww ...

  5. Linux 系统结构,nglinx

    Linux 系统结构 Linux系统一般有4个主要部分:内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统. N ...

  6. MongoDB shell 3 集合方法

    方法名 描述 db.collection.aggregate() 聚合,主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果 db.collection.bulkWrite() 批量写入 ...

  7. go中的字符串数值转化

    #string到int int,err := strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt(string, 10, ...

  8. Linux(Contos7)下使用SSH远程安装MySQL 8.0.17 完整笔记

    1. 使用putty 配置远程服务器连接,登录服务器. 由于没有指定下载包 使用 yum install mysql-server  提示 未指定包,如: 2. 因为甲骨文的收购了Mysql并且对My ...

  9. 寄存器,移位寄存器的电路原理以及verilog代码实现

    寄存器:用以存放二进制代码的电路,下图为由维特阻塞D触发器组成的4位数码寄存器: 逻辑功能分析: 1.异步端CR置0时,输出置0: 2.同步并行置数:D0~D3为4个输入代码,当CP上升沿到达时,D0 ...

  10. stack的简单用法总结

    stack中常见方法 top():返回一个栈顶元素的引用,类型为 T&.如果栈为空,返回值未定义. push(const T& obj):可以将对象副本压入栈顶.这是通过调用底层容器的 ...