数组的定义
何为数组?学过计算机编程语言的同学都知道,数组的特性就是一组数据类型相同的集合(不包括有一些编程语言提出来的关联数组的概念)。那么shell中数组是怎么定义呢,我们来看两种数据类型:一是数值类型,二是字符串类型;虽然shell本身是弱类型的,但也可以这么区分。
数值类型的数组:一对括号表示数组,数组中元素之间使用"空格"来隔开。
举个例子
数值类型:
arr_number=(1 2 3 4 5);
字符串类型:同样,使用一对括号表示数组,其中数组中的元素使用双括号或者单引号包含,同样使用"空格"来隔开。
arr_string=("abc" "edf" "sss"); 或者 arr_string=(‘abc‘ ‘edf‘ ‘sss‘);
数组的操作
我们使用数值类型数组arr_number=(1 2 3 4 5)做为源数组进行相关的讲解:获取数组长度,读取某个下标的值,对某个下标赋值,删除、分配、替换以及遍历。提一个知识点,我们在shell里面想获取某个变量的值,使用$符开头,如:$a或者${a}
获取数组长度
echo ${#arr_string[*]}或 echo ${#arr_string[@]} 就是讲中括号里面前面加个#号
获取某个下标的值
${数组名[下标]}
对某个下标进行赋值:
这里需要提出两个问题:
第一个问题是如果该下标元素已经存在,会怎么样?
答:会修改下标的值为新的指定值。
第二个问题是如果指定的下标已经超过当前数组的大小,如上述的arr_number的大小为5,指定下标为10或者11或者大于5的任意值会如何?
答:新赋的值被追加到数组的尾部。如:
[root@linux-node2 script]# arr_number[19]=9
[root@linux-node2 script]# echo ${arr_number[*]}
1 2 3 4 5 8 8 9
删除操作
清除某个元素:unset arr_number[19]
清除整个数组:unset arr_number
分片访问
分片访问形式为:${数组名[@或*]:开始下标:结束下标},注意,不包括结束下标元素的值。
例如:echo ${arr_number[*]:0:4}
模式替换
形式为:${数组名[*或@]/模式/新值}
例如:echo ${arr_number[*]/2/98}
数组的遍历
数组遍历我们使用for语句来演示:
for v in ${arr_number[@]}; do
echo $v;
done
结束语:数组使用的方式还比较少,之后在写脚本的过程中,希望能将数组运用好
本文出自 “常想一二” 博客,请务必保留此出处http://250919938.blog.51cto.com/962010/1918830
原文地址:http://250919938.blog.51cto.com/962010/1918830