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

结束语:数组使用的方式还比较少,之后在写脚本的过程中,希望能将数组运用好

时间: 2024-12-21 04:04:12

shell之数组的相关文章

每天一个shell知识--数组

1.shell中数组的定义: 数组名=(value value1 value2 ) 也可以单独的设定数组的分量: arrayL[0]=value arrayL[1]=value1 2.${arrayL[@/*]}获得数组的所有值 3.${#arrayL[@]}获得数组长度 小例子如下: #!/bin/bash arrayList=(1 2 3 4 5) for i in ${arrayList[@]} do echo ${i} done echo "the length is ${#arrayL

shell 常规数组&关联数组

在日常编写shell的过程中,数组是一个非常常用到的内容.我们这里简要介绍两种数组的使用方式.一种常规数组,一个中关联数组.差异就是常规数组,只能用整数作为下标来进行数据的存取.而关联数组能够使用字符作为小标来进行存储. 常规数组 1)  初始化 数组中的多个变量用括号来括起来,变量间用空格来间隔开来. [email protected]:~/test_shell#./demo1.sh 1 2 3 4 5 1 2 3 4 [email protected]:~/test_shell# mored

shell 脚本 ---数组

数组的定义:所谓数组,就是相同数据类型的元素按一定顺序的集合,就是把有限个类型相同的变量用一个名字命令,也就是说这些变量被定义成数组之后,它们就不在有自己的名字了,那么我们怎么找到各个变量或者元素呢?是通过索引或者下标(有时候也称下标变量) 数组特点: 1.数组是相同数据类型元素的集合 2.数组中的各个元素是有先后顺序的,它们在内存中按照这个先后顺序放在一起,也就是说:        数组是内存中连续的一段空间. 3.数组元素用整个数组名字和它自己在的数组中的顺序位置来表示,A[0] 表示:数组

Linux shell之数组

Linux shell之数组 引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解,shell中的数组. 数组的定义 何为数组?学过计算机编程语言的同学都知道,数组的特性就是一组数据类型相同的集合(不包括有一些编程语言提出来的关联数组的概念).那么shell中数组是怎么定义的呢,我们来看两种数据类型:一是数值类型,二是字符串类型:虽然shell本身是

bash shell 中数组使用举例

bash shell 中数组使用举例 一 背景 让我们先来看一个 shell 脚本的执行过程及结果: [[email protected] ~]$ sh array.sh N2 N3 N4 The elements of this array 2-4 are: N2 N3 N4 N1 is in array. N2 is in array. N3 is in array. N4 is in array. The original array is as follows: N1 N2 N3 N4

shell中数组的定义与操作

前言: 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解,shell中的数组. 数组的定义 何为数组?学过计算机编程语言的同学都知道,数组的特性就是一组数据类型相同的集合(不包括有一些编程语言提出来的关联数组的概念).那么shell中数组是怎么定义的呢,我们来看两种数据类型:一是数值类型,二是字符串类型:虽然shell本身是弱类型的,但也可以这么区分.

shell之数组的使用

数组 Array 一段连续的内存空间 1) 定义数组 [[email protected] shell]# aa[0]=martin [[email protected] shell]# aa[1]=jerry [[email protected] shell]# aa[2]=mike [[email protected] shell]# aa[10]=alice [[email protected] shell]# bb=(192.168.1.1 192.168.1.2 192.168.1.3

shell脚本数组的数学运算

今天在用shell脚本写斐波那契数列计算时,一直不停的报错,主要原因是因为shell脚本实在太不智能,在进行数组运算时需要写大量的符号,很容易混淆,所以稍微总结一下数组元素的计算. 首先,有几种情况: 1 在将一个数学运算结果赋值给某普通变量时: (1) let var=算术表达式 (2) var=$[算术表达式] (3) var=$((算术表达式)) (4) var=$(expr arg1 arg2 arg3 ...) 2 在将一个数学运算结果赋值给某数组元素时: (1)let arr[$i]

shell编程-数组

#!bin/bash/ A=(a b c hello) echo ${A[*]} echo ${A[@]} echo ${A[0]} echo ${A[1]} echo ${A[2]} echo ${A[3]} echo ${A[4]} 在shell里变量及数据都不用定义类型,因为都是字符型.A[@].A[*]都是表示整个数组 A[3]输出hello 说明hello是一个元素 ,每个元素都是以空格隔开