shell函数
shell函数
shell中允许将一组命令集合或语句形成一段可用代码,这些代码块称为shell函数。给这段代码起个名字称为函数名,后续可以直接调用该段代码的功能。
1.函数的定义
函数名()
{
函数体(一堆命令的集合,来实现某个功能)
}
function 函数名()
{
函数体(一堆命令的集合,来实现某个功能)
}
function_name() {
command
command
}
function function_name() {
command
command
}
2.函数的调用
通过function关键字定义shell函数,也可以省略function关键字
shell的函数,先定义,后调用
举例
# 定义第一个函数,名字是 hello
function hello(){
# 被封装的代码,执行该函数,就会执行这里的函数体
echo "hello linux."
}
hello # 直接写函数名就可以调用函数,不需要带()
导入系统函数库
在脚本中写入
source /etc/init.d/functions
引入使用
action "你的字符串:成功" /bin/true
action "你的字符串:失败" /bin/false
函数从文件中导入
vim func1.sh
#!/bin/bash
name='吴彦祖'
echo_name(){
echo "该变量name的值是:$name" # 只定义不调用
}
hello(){
echo "原来脚本可以这样玩,我是func1中的hello函数,我被执行了"
}
hello
vim func2.sh
#!/bin/bash
. func1.sh # 脚本2中导入func1.sh
echo_name # 调用func1.sh中的echo_name函数
bash func2.sh
原来脚本可以这样玩,我是func1中的hello函数,我被执行了
该变量name的值是:吴彦祖
函数传参
1. 这里的函数传参,是指单独给函数传递执行参数,和给脚本传入参数是两码事
2. 函数传参是指,函数在执行的时候,可以传入位置参数,这样函数连带参数一起执行。
举例:
#!/bin/bash
function hello(){
echo "函数开始执行"
echo "函数体中接收的参数1 :" $1
echo "函数体中接收的参数2 :" $2 # 这里是执行函数传入的参数,即指下面的laoliu laoba
}
# 这里传入的是函数参数
hello laoliu laoba
echo "函数外,可以正常的接收位置参数1:" $1
echo "函数外,可以正常的接收位置参数2:" $2 # 这里是执行脚本传入的参数 $1和$2