shell脚本 函数 ,数组

126 阅读1分钟

函数定义

在编写脚本时,有脚本可以反复使用,此时可以用到函数。

函数使用方法

1定义函数

2再使用函数

基本格式

#标准格式
function 函数名() {
    命令序列
 }
 
 #简化写法不写function
 函数名 (){
     函数体
 }    
 #如果写了function关键字 可以省略函数后面的小括号
 function 函数名{
     命令序列
 }

注意事项

  1. 直接写 函数中调用函数 直接写函数名
  2. 同名函数 后一个生效
  3. 调用函数一定要先定义
  4. 每个函数是独立 函数调用
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