shell脚本之数组

目录

一、shell数组的定义

二、定义数组的方法

三、数组的数据类型

四、获取数组的数据列表

五、获取数组长度

六、获取数组下标对应的值

七、数组的常用操作

7.1数组的遍历

7.2数组切片

7.3数组替换

7.4数组删除和指定下标的值删除

7.5数组追加元素

查看所有数组—declare -a 

向函数传数组参数


一、shell数组的定义

  • 数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组)

  • 数组元素的下标由 0 开始。

  • Shell 数组用括号来表示,元素用"空格"符号分割开

  • 在shell语句中,使用、遍历数组的时候,数组格式要写成 ${arr[@]} 或 ${arr[*]}

二、定义数组的方法

法一:

数组名=(value1 value2 value3...)

[root@localhost ~]# num=(1 2 3 4 5 6)
[root@localhost ~]# echo ${num[@]}
1 2 3 4 5 6

法二:

数组名=([0]=value0 [1]=value1......)

[root@localhost ~]# num1=([0]=1 [1]=2 [2]=3 [3]=4 [4]=5 [5]=6)
[root@localhost ~]# echo ${num1[@]}
1 2 3 4 5 6

法三:

数组名[0]="value"

数组名[1]="value"

数组名[2]="value"

数组名[3]="value"

[root@localhost ~]# c[0]=1
[root@localhost ~]# c[1]=2
[root@localhost ~]# c[2]=3
[root@localhost ~]# c[3]=4
[root@localhost ~]# echo ${c[@]}
1 2 3 4

三、数组的数据类型

  • 数值类型、字符类型、混合类型...

[root@localhost ~]# cc=(1 2 a ass)
[root@localhost ~]# echo ${cc[@]}
1 2 a ass

四、获取数组的数据列表

echo ${数组名[*]}
echo ${数组名[@]}

五、获取数组长度

echo ${#数组名[*]} 
echo ${#数组名[@]} 

六、获取数组下标对应的值

下标从零开始

数组名=(元素0  元素1  元素2  ……)                    
echo ${数组名[索引值]}                            输出数组索引值对应的元素,索引值为从0开始

echo ${数组名[0]}

[root@localhost ~]# echo ${c[@]}
1 2 3 4
[root@localhost ~]# echo ${c[0]}
1
[root@localhost ~]# echo ${c[2]}
3

七、数组的常用操作

7.1数组的遍历

shell脚本之数组_第1张图片

7.2数组切片

[root@localhost ~]# echo ${a[@]}
1 2 3 4 65 66                      输出数组
[root@localhost ~]# echo ${a[@]:1:3}
2 3 4                              输出数组1-3下标的值
[root@localhost ~]# echo ${a[@]:1:1}
2
[root@localhost ~]# echo ${a[@]:1:8} 
2 3 4 65 66                         输出数组1后面的所有元素

7.3数组替换

#临时替换
[root@yxp data]#echo ${a[@]/4/7} 
 
#重新赋值,可以永久修改
[root@yxp data]#a=(${a[@]/4/7})

#临时替换
[root@localhost ~]# echo ${a[*]}
1 2 3 4 5 6 7 8 9
[root@localhost ~]# echo ${a[*]/4/7}
1 2 3 7 5 6 7 8 9
[root@localhost ~]# a=(1 2 3 4 5 6 74 8 9)
[root@localhost ~]# echo ${a[*]/4/7}
1 2 3 7 5 6 77 8 9                     这里的替换是把数组中所有的4都替换掉

shell脚本之数组_第2张图片 shell脚本之数组_第3张图片

7.4数组删除和指定下标的值删除

unset  数组名

unset  数组名[下标]

shell脚本之数组_第4张图片

7.5数组追加元素

法一:直接使用下标进行元素的追加

数组名[下标]=变量

法二:将数组的长度作为下标进行追加元素(其实就是将下标换了一种表达方式)

数组名[${数组名[@]}]=变量名

shell脚本之数组_第5张图片

法三:使用+=进行追加

数组名+=(变量1 变量2 ...)

shell脚本之数组_第6张图片

 shell脚本之数组_第7张图片

查看所有数组—declare -a 

shell脚本之数组_第8张图片

 

向函数传数组参数

//将一个数组当做参数列表传入函数执行,实现数组值翻倍
[root@localhost1 ~]#vim chuancan.sh
#!/bin/bash
test1() {
  arrlist=($@)    #关键在这里获取数组传入的参数
  for ((i=0;i<${#arrlist[@]};i++))
  do
    newarr[$i]=$[${arrlist[$i]} * 2]
  done
  echo ${newarr[@]}
}
arr=(10 20 30 40 50)
echo "原始数组为:${arr[@]}"
 
result=$(test1 ${arr[@]})
echo "数组值翻倍后为:$result"
 
[root@localhost1 ~]#bash chuancan.sh
原始数组为:10 20 30 40 50
数组值翻倍后为:20 40 60 80 100

你可能感兴趣的:(linux,bash,开发语言)