函数定义
在编写脚本时,有脚本可以反复使用,此时可以用到函数。
函数使用方法
1定义函数
2再使用函数
基本格式
#标准格式
function 函数名() {
命令序列
}
#简化写法不写function
函数名 (){
函数体
}
#如果写了function关键字 可以省略函数后面的小括号
function 函数名{
命令序列
}
注意事项
- 直接写 函数中调用函数 直接写函数名
- 同名函数 后一个生效
- 调用函数一定要先定义
- 每个函数是独立 函数调用
first () {
echo "hello"
}
second () {
echo "world"
}
echo `first` `second`
查看函数
declare -F
函数的传参数
#!/bin/bash
# 函数定义
#!/bin/bash
sum () {
echo $1
echo $2
echo ${10}
}
read -p "输入第一个参数:" first
read -p "输入第二个参数:" second
sum $first $second
函数变量
变量作用域 局部变量: 作用域是函数的生命周期, 在函数结束时被自动销毁
local var=value 定义局部变量
本地变量;作用域是运行脚本的shell进程的生命周期,其范围为当前shell
[root@localhost opt]# name=wang ##本地变量
[root@localhost opt]# echo $name
wang
[root@localhost opt]# func1 () { name=zhou; } ##定义函数变量
[root@localhost opt]# func1
[root@localhost opt]# echo $name
zhou ##原来的本地变量被替换了
为了调用函数变量时候不影响本地变量,要使用局部变量
[root@localhost opt]# name=wang
[root@localhost opt]# func1 () { local name=zhou; }
[root@localhost opt]# echo $name
wang
使用局部变量后,函数体中出现的变量作用范围只存在当前函数的生命周期
数组
数组是一个固定长度的存储相同数据类型的数据结构,数组中的元素被储存在一段连续的内存空间中。 数组声明
# 普通数组可以不用声明,直接使用
decalare -a ARRAY_NAAME
# 关联数组必须声明
declare -A ARRAY_NAME
查看下标
echo ${!a[*]}
echo ${a[从0开始计算的数值]}
echo ${a[*]} //*代表所有参数
echo ${a[@]} //@同*
插入元素到数组中
直接下标添加,直接使用下标index为数组元素赋值
array_name[index]=value