Shell语言-18-函数

1.简介

Linux Shell 中的函数其实和java当中的类型,将相似的任务或代码封装到函数中,供其他地方调用;

[root@Centos-root473791 ~]# cat mainD.sh 
#!  /bin/sh

export current_time=`date "+%Y-%m-%d %H:%M:%S" `

start_one()
{
echo "执行start_one的方法";
start_two
}

start_two()
{
echo  "执行 start_two的方法";
echo  "$current_time";
}

main()
{
echo "执行main方法"
start_one
}

main

echo "执行结束"
[root@Centos-root473791 ~]# sh mainD.sh 
执行main方法
执行start_one的方法
执行 start_two的方法
2021-01-23 04:38:00
执行结束
[root@Centos-root473791 ~]# 

2. 语法格式

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

2.1 方法一

function name(){
commands
[return value]
}

2.2 方法二

name(){
commands
[return value]
}

2.3 方法三

function name{
commands
[return value]
}

2.4 如何调用函数

直接使用函数名调用,可以将其想象成Shell中的一条命令;

函数内部可以直接使用参数1 、 ¥ 2… 1、¥2…1、¥2…n

调用函数:function_name $1 $2

function 是shell中的关键字,专门用来定义函数;
name是函数名;
commands是函数要执行的代码
return value表示函数的返回值,其中return 是shell关键字,专门用在函数中返回一个值;这一部分可以写也可以不写。
由{}包围的部分称为函数体,调用一个函数,实际上就是执行函数体中的代码。

执行带参数的函数
functionName arg1 arg2
Shell中的位置参数(1/2…/?/$@)均可作为函数的参数进行传递
@$0比较特殊,仍然是父脚本的名称
此时父脚本的参数会临时被函数的参数所掩盖或隐藏
函数的参数变量是在函数里面进行定义

3. 函数返回值

3.1返回值的方式

  • 方法一 return
  • 方法二 echo

3.1.1 使用return返回值

使用return返回值,只能返回1-255的整数
函数使用return返回值,通常只是用来供其他地方调用获取状态,因此通常仅返回0或1;0表示成功,1表示失败;

3.1.2使用echo返回值

使用echo可以返回任何字符串结果;
通常用于返回数据,比如一个字符串值或者列表值;

4. 局部变量和全局变量

4.1 全局变量

不做特殊声明,Shell中变量都是全局变量;
Tips:大型脚本程序中函数中慎用全局变量;

4.2 局部变量

定义变量时,使用local关键字;
函数内和外若存在同名变量,则函数内部变量覆盖外部变量;

[root@Centos-root473791 ~]# cat 11.sh
#!  /bin/bash
 
var1="Hello world"

function test
{
    local var2=87
}

test
echo $var1
echo $var2
[root@Centos-root473791 ~]# sh 11.sh 
Hello world

[root@Centos-root473791 ~]# 

5 函数的优势

方便n次使用,减少代码量,使之方便,简洁。
当需要修改里面的重复代码时,只需要修改一次函数即可实现需求;
将函数写进文件,需要时直接通过文件调用

6 函数的执行总结

  1. shell各种程序的执行顺序为:系统别名 》函数 》系统命令 》可执行文件等。
  2. 函数执行时,会和调用它的脚本共享变量,也可以为函数设定局部变量及特殊参数
  3. 在shell函数里面,return和exit功能类似,区别是return是退出函数,exit是退出脚本
  4. 如果将函数单独存放为一个文件,在加载需要使用source或. 进行加载
  5. 在函数内部一般使用local定义局部变量,仅在函数体内有效
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alan0517

感谢您的鼓励与支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值