文章目录
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 函数的执行总结
- shell各种程序的执行顺序为:系统别名 》函数 》系统命令 》可执行文件等。
- 函数执行时,会和调用它的脚本共享变量,也可以为函数设定局部变量及特殊参数
- 在shell函数里面,return和exit功能类似,区别是return是退出函数,exit是退出脚本
- 如果将函数单独存放为一个文件,在加载需要使用source或. 进行加载
- 在函数内部一般使用local定义局部变量,仅在函数体内有效