shell之数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell之数组相关的知识,希望对你有一定的参考价值。

数组的定义

  何为数组?学过计算机编程语言的同学都知道,数组的特性就是一组数据类型相同的集合(不包括有一些编程语言提出来的关联数组的概念)。那么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的任意值会如何?

答:新赋的值被追加到数组的尾部。如:

[[email protected] script]# arr_number[19]=9

[[email protected] 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

以上是关于shell之数组的主要内容,如果未能解决你的问题,请参考以下文章

Linux Shell系列教程之Shell数组

Shell编程之数组

shell编程之数组

shell脚本进阶之数组基础

shell编程之数组

shell之数组