Shell-数组
1、数组定义
# 定义
[root@shell ~]# a=(1 2 3 4)
# $a 默认输出数组第一个数
[root@shell ~]# echo $a
# ${a[0]} 数组第一个数
# ${a[1]} 数组第二个数
[root@shell ~]# echo ${a[0]}
1
[root@shell ~]# echo ${a[1]}
2
######## 组数常用的几个替换方法 ########
# 表示获得全部组数:${A[@]} 或 ${A[*]}
[root@shell ~]# echo ${a[*]}
1 2 3 4
[root@shell ~]# echo ${a[@]}
1 2 3 4
# 表示获得全部组数数量:${#A[@]} 或 ${#A[*]}
[root@shell ~]# echo ${#a[@]}
4
[root@shell ~]# echo ${#a[*]}
4
# 表示获得第一个组数的长度,依次类推:${#a[0]}
[root@shell ~]# echo ${#a[0]}
1
2、数组读取与赋值
# 定义
[root@shell ~]# a=(1 2 3 4)
# 赋值
[root@shell ~]# a=(1 2 3 4)
[root@shell ~]# echo ${a[*]}
1 2 3 4
[root@shell ~]# a[2]=100
[root@shell ~]# echo ${a[*]}
1 2 100 4
# 删除
[root@shell ~]# a=(1 2 3 4)
[root@shell ~]# unset a
[root@shell ~]# echo ${a[*]}
## 直接通过:unset 数组[下标] 可以清除相应的元素,不带下标,清除整个数据。
[root@shell ~]# a=(1 2 3 4)
[root@shell ~]# unset a[1]
[root@shell ~]# echo ${a[*]}
1 3 4
## 注意:当某个元素删除后,再次读取这个元素就是空。如果a[1]删除后,就第二个元素2删除了,再次读取a[1]就是空,并不是新的第二个元素3。
[root@shell ~]# echo ${a[1]}
[root@shell ~]# echo ${#a[*]}
3
3、特殊使用
1)分片:
[root@shell ~]# a=(1 2 3 4 5 6 7 8)
[root@shell ~]# echo ${a[@]:0:3}
[root@shell ~]# echo ${a[@]:1:4}
2 3 4 5
[root@shell ~]# c=(${a[@]:1:4})
[root@shell ~]# echo ${#c[@]}
4
[root@shell ~]# echo ${c[*]}
2 3 4 5
# 直接通过 ${数组名[@或*]:起始位置:长度} 切片原先数组,返回是字符串,中间用“空格”分开,因此如果加上”()”,将得到切片数组,上面例子:c 就是一个新数据。
2)替换:
[root@shell ~]# a=(1 2 3 4 5 6 7 8)
[root@shell ~]# echo ${a[@]/3/100}
1 2 100 4 5 6 7 8
[root@shell ~]# echo ${a[@]}
1 2 3 4 5 6 7 8
[root@shell ~]# a=(${a[@]/3/100})
[root@shell ~]# echo ${a[@]}
1 2 100 4 5 6 7 8
# 新赋值时,()代表输出里面的命令结果
[root@shell ~]# a=(echo ${a[@]})
[root@shell ~]# echo ${a[@]}
echo 1 2 100 4 5 6 7 8
[root@shell ~]# a=(echo ${a[@]})
[root@shell ~]# echo ${a[@]}
echo echo 1 2 100 4 5 6 7 8
# 调用方法是:${数组名[@或*]/查找字符/替换字符} 该操作不会改变原先数组内容,如果需要修改,可以看上面例子,重新定义数据。
4、 将数组赋给数组
#!/bin/bash
a=(1 2 3)
b=()
for((i=0;i < ${#a[*]};++i ));
do
echo ${a[*]}
b[$i]=${a[$i]}
echo ${b[*]}
#echo ${b[i]}
done
echo ${b[*]}

a=(1 2 3)
b=()
echo ${a[*]}
# 这里实际上是将a=(1 2 3)赋值给了b[0],而不是 a与b 完全一样
b=${a[*]}
echo '#########################'
echo ${b[0]}
echo '#########################'
echo ${b[1]}
echo '#########################'
echo ${b[2]}
b[1]=${a[*]}
echo '#########################'
echo ${b[1]}
echo ${b[*]}
echo ${b[0]}


浙公网安备 33010602011771号