[9-13]Shell系列8——数组

本文旨在复习Shell脚本编程中数组的定义和赋值、读取数组、以及获取数组的长度

知识储备


  • 数组:连续的多个独立的内存空间,每个内存空间相当于一个变量
  • 在逻辑上,我们看到的数组是“连续的”,但是映射到真实物理内存空间上是“杂乱的
  • bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
  • 数组2元素:数组名[索引],依据索引的不同可以分为以下2种

数组定义和赋值



Shell中,用括号来表示数组,数组元素用“空格”符号分割开。

● 定义数组的一般形式为:


1


array_name=(value1 value2 ... valueN)

● 赋值方式

(1)一次赋值一个元素


1


array[index]=value

(2)一次复制全部元素


1


array=("val1" "val2" ...)

(3)指定索引进行赋值


1


array=([0]="val1" [3]="val2")

(4)从用户交互式输入赋值


1


read -a array

读取数组[引用数组]



● 读取数组指定索引的元素值的一般格式是:


1


${array[index]}

● 还可以一次读取所有数组中元素


1
2


${array[*]}
${array[@]}

例1:输入5个数字,存入数组,引用该数组倒序输出这5个数字

代码实现


1
2
3
4
5
6
7
8
9
10
11


#!/bin/bash
for i in $(seq 0 4)
do 
    read -p "Enter the 5 nums: " num
    Numarray[$i]=$num
done

for q in $(seq 4 -1 0)
do 
    echo ${Numarray[$q]}
done

获取数组长度



获取数组长度分为获取数组元素个数,还可以获取指定索引元素值的长度

● 获取数组元素的个数,一般格式为:


1
2
3


length=${#array[@]}
# 或者
length=${#array[*]}

例1:请注意#千万不能省略,看下面这个例子

请注意:当#号省略后,就变成了将数组所有元素复制给变量length,如果要打印个数请记得#

● 获取指定索引数元素值长度,一般格式为:


1


length=${#array[index]}

例2:获取上述例子中第二个元素color的长度值

时间: 2024-10-16 13:00:32

[9-13]Shell系列8——数组的相关文章

Linux Shell系列教程之(六)Shell数组

本文是Linux Shell系列教程的第(六)篇,更多shell教程请看:Linux Shell系列教程 Shell在编程方面非常强大,其数组功能也非常的完善,今天就为大家介绍下Shell数组的用法. Shell支持一维数组(不支持多维数组),并且没有限定数组的大小. 类似与C语言,数组元素的下标由0开始编号.获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0. 一.Shell数组的定义 在Shell中,用括号来表示数组,数组元素之间用“空格”分割开. 定义数组的一般形式

Linux Shell 创建序列数组

关于linux数组定义,以及生成方法,请看:linux shell 动态生成 数组系列 seq使用技巧 .这里我主要说的是高效生成list 字符串,还有数组方法. 一.seq方法生成: 1 2 3 [[email protected] shell]$ aNumList=$(seq 100); [[email protected] shell]$ echo $aNumList 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2

shell字符串与数组总结

博客主页:http://blog.csdn.net/minna_d 1. 计算字符串长度: echo ${#str} 2. 按字符截取字符串: ${word:begin:length} 3.借助% .%%.#.##对字符串的切割: %:从右向左非贪婪匹配 %%:从右向左贪婪匹配 #:从左向右非贪婪匹配 ##:从左向右贪婪匹配 用法示例: ${str%.*} ${str%%.*} ${str#*.} ${str##*.} PS:"."这里仅仅只是一个普通的点,而不是任意字符 [[emai

[9-13]Shell系列2——变量基础

本文旨在复习shell变量定义.使用变量.删除变量.只读变量以及变量类型.特殊变量实例 知识储备 变量本质上是内存空间中的一块指定区域,其数据内容会发生变化: 变量名本质是个指针,指向这个数据变化的内存空间,那么在命令执行或者操作时,只需要通过变量名,就能够随时调用那个变化的数据,很方便 Shell脚本中变量和大多编程语言一样,有全局的,也有局部的[比如作用于一个function函数] 值得一提的是,shell是弱类型编程语言 弱类型:变量无需事先申明,直接可用[为空] 强类型:变量使用前,必须

(转)轻松掌握shell编程中数组的常见用法及示例

缘起:在老男孩进行linux培训shell编程教学中,发现不少水平不错的网友及同学对数组仍然很迷糊,下面就给大家分享下数组的用法小例子,希望能给大家一点帮助.其实SHELL的数组很简单,好用.我们学习都应该遵循简单.易用的原则. shell编程中数组的简单用法及示例 新版本的Bash支持一维数组. 数组元素可以使用符号variable[xx]等方式来初始化. 另外, 脚本可以使用declare -a variable语句来指定一个数组等.要引用一个数组元素(也就是取值), 可以使用大括号, 访问

shell 函数 返回数组

shell 函数 返回数组,布布扣,bubuko.com

8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下

8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下 # 8.10 shell 特殊符_cut命令 --- - * 任意个任意字符 - ?任意一个字符 -  井号#注释字符  写命令的时候前面加一个#,那么这条命令就不生效,包括shell脚本里面也是,前面加个#表示这一行不生效,可以加一些注释说明的文字 ``` <[email protected] ~># #ls a.txt <[email

20.16 20.17shell中的函数(上下);20.18 shell中的数组;20.19 告警系统需求分析

20.16 shell中的函数(上) 函数就是把一段代码整理到了一个小单元中,并给这个小单元起 一个名字,当用到这段代码时直接调用这个小单元的名字即可. 1. [[email protected] ~]# vi fun1.sh 添加内容: #!/bin/bash function inp(){ echo "The first par is $1" echo "The second par is $2" echo "The third par is $3&q

shell 脚本-关联数组

shell 的关联数组 Shell Associative Array   bashi没有原生的对于类似hash table的支持,不像perl或python.下标数组元素是通过数组下标(数组下标可以是算术表达式,其结果必须是一个整数)来访问的,但是这种访问方式在表达某些关联性很强的数据时会存在限制.shell 提供了另外一种数组,其可以使用任意的字符串作为下标(不必是整数)来访问数组元素.这种数组叫做关联数组(associative array).关联数组的下标和值称为键值对,它们是一一对应的