shell Bash的数组与关联数组的实现

目录
  • 一、一般数组
    • 1.初始化
    • 2.取
    • 3.循环
  • 二、关联数组
    • 1.com
    • 2.初始化
    • 3.取
    • 4.循环

一、一般数组

1.初始化

Bash Shell 只支持一维数组,不支持多维数组;
不需要声明,初始化时直接用变量接,只要右边是括号,不需要定义数组大小。

与大部分编程语言类似,数组元素的下标由 0 开始。

方式一:空格分割,用逗号分割会不正常

array_name=(value1 value2 ... valuen)

方式二:索引只能用数字,如果用字符串,不会报错,但取的时候会不正常

array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

2.取

${array_name[index]}

#!/bin/bash

my_array=(A B "C" D)

echo "第一个元素为: ${my_array[0]}"
echo "第二个元素为: ${my_array[1]}"
echo "第三个元素为: ${my_array[2]}"
echo "第四个元素为: ${my_array[3]}"

$ chmod +x test.sh 
$ ./test.sh
第一个元素为: A
第二个元素为: B
第三个元素为: C
第四个元素为: D

3.循环

arrayWen=(a b c d e f)
for var in ${arrayWen[@]};
do
    echo $var
done

二、关联数组

1.com

Bash 4.2以上版本支持关联数组(用bash --version查看),可以使用任意的字符串、或者整数作为下标来访问数组元素。

关联数组使用 declare 命令来声明,语法格式如下:declare -A array_name ,-A 选项就是用于声明一个关联数组。

2.初始化

方式一:用逗号和空格分割都可以

declare -A site=(["google"]="www.google.com", ["runoob"]="www.runoob.com", ["taobao"]="www.taobao.com")

方式二:

declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"

3.取

使用 @ 或 * 可以获取数组中的所有元素

#!/bin/bash

my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D

echo "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"

$ chmod +x test.sh 
$ ./test.sh
数组的元素为: A B C D
数组的元素为: A B C D

在数组前加一个感叹号 ! 可以获取数组的所有键

declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"

echo "数组的键为: ${!site[*]}"
echo "数组的键为: ${!site[@]}"

数组的键为: google runoob taobao
数组的键为: google runoob taobao

获取数组长度

echo "数组元素个数为: ${#my_array[*]}"
echo "数组元素个数为: ${#my_array[@]}"

数组元素个数为: 4
数组元素个数为: 4

4.循环

for key in ${!map[*]};do
    echo $key ":" ${map[$key]}
done

到此这篇关于shell Bash的数组与关联数组的实现的文章就介绍到这了,更多相关shell Bash的数组与关联数组内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Shell命令之数组表示语法学习

    目录 引言 一.实例 二.读取数组 三.关联数组 四.获取数组中的所有元素 五.获取数组的长度 引言 数组中可以存放多个值.Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似). 与大部分编程语言类似,数组元素的下标由 0 开始. Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下: array_name=(value1 value2 ... valuen) 一.实例 创建一个简单的数组 my_array: my_ar

  • shell编程入门之变量,字符串,数组,函数使用方法总结

    一. 变量 变量定义 定义变量时,变量名不加美元符号 your_name="jb51.net" 注意,变量名和等号之间不能有空格. 除了显式地直接赋值,还可以用语句给变量赋值,如, for file in `ls /etc` 或 for file in $(ls /etc) 已定义的变量,可以被重新定义,如, your_name="tom" echo $your_name your_name="alibaba" echo $your_name 注

  • shell中数组的定义及操作

    目录 一.shell中数组的几种定义方式: 二.数组的打印和输出 一.shell中数组的几种定义方式: 方法一: [root@localhost ~]# array=(1 2 3) [root@localhost ~]# echo ${array[*]} 1 2 3 方法二: [root@localhost ~]# array=([1]=one [2]=two [3]=three) [root@localhost ~]# echo ${array[*]} one two three 方法三: [

  • Shell中数组以及其相关操作的详细实例

    Shell中数据类型不多,比如说字符串,数字类型,数组.数组是其中比较重要的一种,其重要应用场景,可以求数组长度,元素长度,遍历其元素,元素切片,替换,删除等操作,使用非常方便. Shell中的数组不像JAVA/C,只能是一维数组,没有二维数组;数组元素大小无约束,也无需先定义数组的元素个数;但其索引则像JAVA/C/Python,从0开始,下面其常用的方式进行总结. [数组声明] 备注: 1) 不像JAVA/C等强编程语言,在赋值前必须声明:SHELL只是弱编程语言,可事先声明也可不声明: 2

  • Shell数组添加元素及注意事项

    向Shell数组添加元素有多种方法,每种方法在使用时都有一些需要注意的地方,没有见过这方面的总结资料,所以自己总结一下. 直接下标添加 array_name[index]=value 最简单的添加方式,直接用下标index为数组元素赋值,在使用时需要注意的是就是需要确保下标index处原本是没有值的,否则会替换index处原本的值. 数组长度添加 array_name[${#array_name[@]}]=value #或array_name[${#array_name[*]}]=value 以

  • Linux Shell脚本系列教程(六):数组和关联数组

    一.数组和关联数组 数组是Shell脚本非常重要的组成部分,它借助索引将多个独立的独立的数据存储为一个集合.普通数组只能使用整数作为数组索引,关联数组不仅可以使用整数作为索引,也可以使用字符串作为索引.通常情况下,使用字符串做索引更容易被人们理解.Bash从4.0之后开始引入关联数组. 二.定义打印普通数组 数组的方法有如下几种: 复制代码 代码如下: #在一行上列出所有元素 array_var=(1 2 3 4 5 6) #以"索引-值"的形式一一列出 array_var[0]=&q

  • Shell 数组与关联数组详解及实例代码

    Shell 数组与关联数组 1.数组 1.1. 数组定义 一对圆括号表示数组,数组元素之间用空格符号分割 xiaosi@Qunar:~$ a=(1 2 3) xiaosi@Qunar:~$ echo $a 1 xiaosi@Qunar:~$ a=("yoona" "lucy" "tom") xiaosi@Qunar:~$ echo $a yoona 1.2. 数组长度,元素,赋值与删除 长度:用${#数组名[@或*]} 可以得到数组长度 xiao

  • JavaScript中的索引数组、关联数组和静态数组、动态数组讲解

    数组分类: 1.从数组的下标分为索引数组.关联数组 复制代码 代码如下: /* 索引数组,即通常情况下所说的数组 */ var ary1 = [1,3,5,8]; //按索引去取数组元素,从0开始(当然某些语言实现从1开始) //索引实际上就是序数,一个整型数字 alert(ary1[0]); alert(ary1[1]); alert(ary1[2]); alert(ary1[3]);   /* 关联数组,指以非序数类型为下标来存取的数组  python中称为字典 */ var ary2 =

  • Javascript的常规数组和关联数组对比小结

    首先我们看看数组的分类: 从数组的下标分为索引数组.关联数组 复制代码 代码如下: /* 索引数组,即通常情况下所说的数组 */ var ary1 = [1,3,5,8]; //按索引去取数组元素,从0开始(当然某些语言实现从1开始),索引实际上就是序数,一个整型数字 ary1[0]; ary1[1]; ary1[2]; ary1[3]; /* 关联数组,指以非序数类型为下标来存取的数组 python中称为字典 */ var ary2 = {}; //存取时,以非序数(数字),这里是字符串 ar

  • 基于php数组中的索引数组和关联数组详解

    php中的索引数组是指以数字为键的数组.并且这个键值 是自增的 关联数组指的是一个键值对应一个值,并且这个键值是不规律的,通常都是我们自己指定的. 他们两还有不同的地方,索引数组转为json后是数组.而关联数组转为json后是对象.通常我们给app端写接口都是用索引数组转成json传过去.客户端那边对数组更为友好一点. 需要注意点: $arr = [0=>1,2=>3a]; 上述数组$arr转为json会是对象形式的. $arr = ['a','b']; 这里的$arr转为json后是数组的形

  • Linux shell数组与关联数组的用法实例

    1. 关联数组 使用 declare -A(declare 的用法请使用 help 进行查看,help declare) 进行声明关联数组变量: $ declare -A fruits_price $ fruits_price=([apple]='$100' [orange]='$150') 列出关联数组的索引(也就是 key): $ echo ${!fruits_price[*]} $ echo ${!fruits_price[@]} 2. 序列数组 seq 方法创建 基本用法: $ a_nu

  • JavaScript中的关联数组问题

    复制代码 代码如下: var beatles = ["john","Paul","George","Ringo"]; 上面中的beatles数组是个传统数组典型的例子:每个元素的下标是一个数字,每增加一个元素,这个数字就依次增加1.第一个元素的下标是0,第二个元素的下标是1.以此类推. 如果在填充数组时只给出了元素的值,这个数组就将是一个传统数组,它的各个元素的下标将被自动创建和刷新. 可以通过在填充数组时为每个新元素明确地给

  • 浅谈js多维数组和hash数组定义和使用

    多维数组定义 定义数组数组对象用来在单独的变量名中存储一系列的值.使用关键词 new 来创建数组对象. 一维数组定义 var myArray=new Array('a','b','c'); 或 var myArray = []; 二维数组及多维数组定义 javascript二维数组或多维数组都是通过一维数组来模拟起来. 方法1. var arr= new Array(['a','b','c'],['d','e','f']); 方法2: var arr=new Array( new Array()

  • js中的关联数组与普通数组详解

    var privArr = []; privArr['staProjQueryGrid'] = [{ btn_id : 'but_add', roles : ['2001','2005'] }] console.log(privArr,privArr.staProjQueryGrid[0].btn_id) 第一行是定义一个数组priArr,第二行是给这个数组添加一个属性staProjQueryGird,这个属性值是一个数组.打印结果是  but_add var unPrivArr = [];//

  • PHP基于关联数组20行代码搞定约瑟夫问题示例

    本文实例讲述了PHP基于关联数组20行代码搞定约瑟夫问题.分享给大家供大家参考,具体如下: 记得前段时间一写做java开发的兄弟对我说他java60行做了个约瑟夫问题,挺不错的.调侃php应该写这个挺不行的. 于是 呵呵... 洋洋洒洒 20行,写完自己都有些不相信了.哈哈 让不了解php的见识哈php的快捷轻便之处. ps:其实个人挺反感用代码行数来衡量代码数量的,感觉常把代码行数挂嘴边的大多无奈装2.此文仅属闲余娱乐. 回顾一下约瑟夫问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最

随机推荐