shell 字符串数组简单使用

shell中的数组只有一维数组,而且数组的类型不多,由于经常要改Android编译环境以及实现Android的一些简单脚本,用到的字符串数组比较多,学习是为了要使用,对于我们来说,数组的使用就是如何定义、如何查找数据、如何遍历等

 

#!/bin/sh

name_array=(Zhangshan Lisi Wangwu)        #数组的定义和初始化
name_array[3]="chenqw"                              #数组元素添加

echo "name_array length is ${#name_array[@]}"     #数组长度
index=0
for i in ${name_array[@]}                                           #数组遍历
do
        echo ${name_array[$index]}
        let index++
done

name_array[1]="Cherry"                                      #数组元素修改
echo "name_array length is ${#name_array[@]}"
index=0
for i in ${name_array[@]}
do
        echo ${name_array[$index]}
        let index++
done
# 第二种遍历方法
#for((i=0;i<${#name_array[@]};i++))
#do
#       echo ${name_array[$i]}
#done

unset name_array[1]                                        #数组元素删除,注意删除的是数组元素的内容,而且数组长度也减一,此时数组长度为3,其中包含空的第二个元素
echo "name_array length is ${#name_array[*]}"
index=0
for i in ${name_array[*]}
do
        echo ${name_array[$index]}
        let index++
done

name_array[4]="Lisi"                                      #数组元素追加,这时候数组的长度是比上面的3加一变成四,但是由于中间还有一个空元素,所以遍历的时候没法输出这个字符串
echo "name_array length is ${#name_array[*]}"
index=0
for i in ${name_array[*]}
do
        echo ${name_array[$index]}
        let index++
done

echo ${name_array[4]}                               #单独输出最后个字符串

整个运行输出结果:

 

chenqw@ubuntu092:~$ sh test.sh

name_array length is 4

Zhangshan

Lisi

Wangwu

chenqw

name_array length is 4

Zhangshan

Cherry

Wangwu

chenqw

name_array length is 3 //删除name_array[1]="Cherry" 后输出的结果

Zhangshan

 

Wangwu

name_array length is 4 //添加 name_array[4]="Lisi" 输出的结果,此时Lisi是无法输出的,因为长度只有4,导致第五个元素Lisi无法遍历到

Zhangshan

 

Wangwu

chenqw

 

Lisi //echo ${name_array[4]} 输出的结果