数组

和其他编程语言一样,Shell 也支持数组。数组(Array)是若干数据的集合,其中的每一份数据都称为元素(Element)。

Shell 并且没有限制数组的大小,理论上可以存放无限量的数据。和 C++JavaC# 等类似,Shell 数组元素的下标也是从 0 开始计数。

获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式;当然,下标必须大于等于 0。

遗憾的是,常用的 Bash Shell 只支持一维数组,不支持多维数组。一对圆括号表示数组,数组元素之间用空格符号分割

数组定义

root@master:~# arr=(   )   //注意,赋值号=两边不能有空格,必须紧挨着数组名和数组元素。

 root@master:~# echo $arr   //默认输出数组的第一个元素
  1

数组里面可以包含不是同一类型的数据:

root@master:~# arr=(  "my name is yjt")

添加数组元素:

root@master:~# arr[]=
root@master:~# echo ${arr[]}

给特定的元素赋值

root@master:~# arr1=([]= []= []=)
root@master:~# echo ${arr1[]}

数组长度、元素与删除

获取数组元素:用${数组名[下标]} 得到数组元素(下标从0开始), 下标为*或者@得到整个数组内容

语法格式:${array_name[index]}
其中,array_name 是数组名,index 是下标
示例如下:
root@master:~# echo ${arr1[]} //获取单个元素 root@master:~# echo ${arr1[*]} //获取所有元素
6

root@master:~# echo ${arr1[@]}
  2 4 6

删除:通过unset数组[下标]可以清除相应的元素,不带下标则清除全部数据

root@master:~# echo ${arr1[]}

root@master:~# unset arr1[]
root@master:~# echo ${arr1[]} root@master:~# unset arr1
root@master:~# echo ${arr1[*]}

长度:用${#数组名[@或*]} 可以得到数组长度

root@master:~# arr=(  )
root@master:~# echo ${#arr[*]}

获取数组元素的范围

直接通过 ${数组名[@或*]:起始位置:长度} 获取数组给定范围内元素,返回字符串,中间用空格分开

root@master:~# echo ${arr[*]::}
3

root@master:~# echo ${arr[@]:1:2}
  2 3

 

替换

${数组名[@或*]/查找字符/替换字符} 该操作不会改变原先数组内容,如果需要修改,可以看上面例子

root@master:~# echo ${arr[*]}

root@master:~# echo ${arr[*]//}
  

关联数组

Bash支持关联数组,它可以使用字符串作为数组索引,有时候采用字符串索引更容易理解。

定义关联数组

声明某个变量为关联数组

root@master:~# declare -A arr_test

将元素添加到关联数组‘

方法一:利用内嵌索引-值列表的方法
root@master:~# declare -A arr_test
root@master:~# arr_test=([name]=yjt [age]=)
方法二:使用独立的索引-值进行赋值

root@master:~# declare -A arr_test1
  root@master:~# arr_test1[name]=yjt
  root@master:~# arr_test1[age]=22

列出数组索引

每一个数组都有一个索引用于查找。使用${!数组名[@或者*]}获取数组的索引列表

root@master:~# echo ${arr_test[*]}
yjt
root@master:~# echo ${!arr_test[*]}
name age

获取所有的键值对

#!/bin/bash
declare -A arr_yjt
arr_yjt=([name]=yjt [age]=)
for key in ${!arr_yjt[*]}
do
echo "$key ---> ${arr_yjt[$key]}"
done

保存文件到yjt.sh

执行脚本文件:

root@master:~# bash  yjt.sh
name ---> yjt
age --->

Linux 之数组的更多相关文章

  1. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  2. linux C 数组操作

    /****************************************************************** * linux C 数组操作 * 声明: * 本文为解决陈颖奇遇 ...

  3. Linux 中数组的使用

    Linux中数组本人可能用的相对较少,但是会经常遇见,也容易忘记,就顺便记录下来吧 数值类型的数组:一对括号表示数组,数组中元素之间使用“空格”来隔开 arr=(1 2 3 4 5) 字符串类型数组: ...

  4. linux C 数组与指针

    linux C 数组与指针 一.数组 数组是同一数据类型的一组值:属于引用类型,因此数组存放在堆内存中:数组元素初始化或给数组元素赋值都可以在声明数组时或在程序的后面阶段进行. 定义一维数组的一般格式 ...

  5. 转:linux shell 数组建立及使用技巧

    linux shell在编程方面比windows 批处理强大太多,无论是在循环.运算.已经数据类型方面都是不能比较的. 下面是个人在使用时候,对它在数组方面一些操作进行的总结. 1.数组定义 [che ...

  6. 转载-Linux Shell 数组建立及使用技巧

    转载自:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html 如侵犯版权,请联系我删除 linux shell在编程方面比win ...

  7. linux shell 数组建立及使用技巧

    参考网址:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html linux shell在编程方面比windows 批处理强大太多 ...

  8. linux shell 数组的使用

    引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解 ...

  9. Linux Shell 数组

    shell 数组一般都是一维数组. 1. 数组的声明 declare -a arr 该命令将声明一个数组arr,实际上不声明也可以直接定义数组. 2. 数组的初始化 arr=(1 2 3):该命令定义 ...

  10. linux shell数组

    from: http://www.jb51.net/article/34322.htm bash shell只支持一维数组,但参数个数没有限制. 声明一个数组:declare -a array(其实不 ...

随机推荐

  1. 使用springboot实现一个简单的restful crud——01、项目简介以及创建项目

    前言 之前一段时间学习了一些springboot的一些基础使用方法和敲了一些例子,是时候写一个简单的crud来将之前学的东西做一个整合了 -- 一个员工列表的增删改查. 使用 restful api ...

  2. 服务端php之文件上传

    知识点 echo $_SERVER['PHP_SELF']; 自动获取当前文件的路劲(即提交地址为当前页面) 当一个表单有文件域(即文件上传)的时候,method(提交方式)要设置post,这样更加安 ...

  3. hybris commerce storefront的产品搜索功能

    在Hybris Commerce Cloud的storefront的搜索栏键入一些字母,每次键入,会触发一个发送到后台的http请求实现live search的功能: http url如下:https ...

  4. 防火墙对nginx服务器有影响

    开启防火墙后,nginx服务器可能不能正常运行. 1

  5. 通过扩展redis-cli来实现在redis集群中移动槽位

    下面的扩展代码基于redis 5.0.2进行扩展, 对于其他的redis版本, 我没有进行相关的测试.考虑到redis集群的修改频率,这段代码应该同时适用于其他的redis版本. 下面为修改的代码: ...

  6. Android笔记(三十八) Android中的数据存储——SharedPreferences

    SharedPreferences是Android提供的一种轻型的数据存储方法,其本质是基于xml文件存储的,内部数据以key-value的方式存储,通常用来存储一些简单的配置信息. SharedPr ...

  7. CasPHP 便捷简单的 ThinkPHP 框架

    便捷简单的 PHP 框架,自适应后台管理界面 Convenient and succinct(便捷的 简明的;言简意赅的) 核心框架:framework: 5.1.28助手函数:think-helpe ...

  8. Python_列表操作2

    1.使用sort()方法对列表进行永久性排序: colorsList=['hong','cheng','huang','lv'] colorsList.sort() #正序排序 print(color ...

  9. BZOJ4659: Lcm

    Description 给出A,B,考虑所有满足l<=a<=A,l<=b<=B,且不存在n>1使得n^2同时整除a和b的有序数 对(a,b),求其lcm(a,b)之和.答 ...

  10. 运行Vue项目,没办法自动打开浏览器,提示“Unable to open browser. If you are running in a headless environment, please do not use the open flag.”

    留坑,待解决 Unable to open browser. If you are running in a headless environment, please do not use the o ...