• 默认从0开始索引;也可以单独(像字典一样)pid[35420]=httpd -k ssl,
  • 只能是一维的
  • bash4.0增加了关联数组

数组赋值:

declare -a myarray声明数组

  • 一次一个(可以定义稀疏数组)

numberarray[0]=zero

numberarray[1]=one

numberarray[3]=three

  • 一次全部

students=( Python Java Php C )

stat=( $(cat /proc/$$/stat) )

先将$IFS设置成换行符
IFS="
"
hosts=( `cat /etc/hosts` )逐行读取文件
shs=( *.sh )
for sh in "${shs[@]}  #将当前目录的sh文件放到目录
do
echo $sh
done
  • 按索引

主要用于创建稀疏数组

arr=( [0]=zero [2]=two [3]=three [7]=seven)

  • 从输入读取

read -a dice

while IFS=: read -a userdetails
do
:
done < /etc/passwd

[lixn@Fedora24 bash_learn]$ readarray -n 4 -s 2 food  读入数组 -O定义初始的索引值  -n最大行数  -s从输入的开头跳过几行

访问

${shs[0]}

${ shs [@] }

循环遍历

for name in ${students[@]}

当数组中值带有空格时,需要使用双引号,在for循环遍历时要使用"${array[@]}"  (不带引号和使用*有区别)

数组长度${#students[@]} 或 ${#students[*]}

${#students}返回第一个索引对应的值得长度

${#students[1]}

索引可以使用变量

${shs[@]:0:1}从0开始取一个,并不和索引对应

${shs[@]:3}从3开始的所有

关联数组

declare -A beatles声明关联数组

3 declare -A beatles
4 beatles=( [singer]=John [bassist]=Paul [drummer]=Ringo [guitarist]=George )
5
6 for instrument in ${!beatles[@]}
7 do
8 echo "The ${instrument} is ${beatles[$instrument]}"
9 done

数组操作

1)数组复制

hobbies=( "${array[@]}" )  通过赋值复制,但不适用于稀疏数组

2)向数组追加元素

通过复制方法追加hobbies=( "${array[@] diving} )

使用索引追加hobbies[${#hobbies[@]}}]=rowing

组合两个数组array2+=("${array1[@]}")

3)从数组中删除元素

赋空值得到的一个稀疏数组array[3]=    此时使用${array[3]+"Item 3 is set"}, 有返回Item...    ${array[3]?string}

unset array[3]    此时使用${array[3]+"Item 3 is set"}, 返回空,无效

array=清除第一个元素;unset array 清除数组

shell——数组的更多相关文章

  1. Linux Shell 数组

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

  2. shell--2.shell数组

    shell 数组 (1)定义数组 shell中,用括号表示数组,数组元素用空格分开,定义数组的一般形式 arrt_name=(val1 val2 val3) 或者 arry_name=(val1 va ...

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

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

  4. Shell数组例子

    Shell数组例子 循环打印数组,并统计数组的个数: [root@slavedb array]# cat a.sh #!/bin/bash array=( freddy freddie tang sh ...

  5. Shell数组的增删改查

    Shell数组的增删改查 shell数组的定义及取值: a=(1 2 3) [root@bogon tmp]# echo ${a[*]}  1 2 3 [root@bogon tmp]# echo $ ...

  6. 教你使用shell数组

    数组的使用,需要掌握 1.对数组进行赋值 2.通过下标访问数组元素 3.循环遍历所有的元素 代码如下: #!/bin/bash a="39" b="5" c=& ...

  7. linux shell数组

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

  8. Shell 数组定义与获取

    Shell 数组 bash支持一维数组(不支持多维数组),并且没有限定数组的大小. 类似与 C 语言,数组元素的下标由 0 开始编号.获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于 ...

  9. 【Linux】shell数组

    一.概念 shell数组就是一个元素集合,它把有限个元素用一个名字来命名,然后用编号对他们分区.这个名字称为数组名,用于区分不同内容的编号称为数组的下标. 二.shell数组的定义与增删改查 1.sh ...

  10. shell 数组,双层循环打印变量

    双层循环,打印循环执行次数. 特别注意 ,shell 脚本赋值时 '=' 两侧不能有空格,否则报错,shell command not found 但在if 语句中需要有: STR1="ab ...

随机推荐

  1. gitlab 提交

    gitlab 提交 Git global setup git config --global user.name "lial" git config --global user.e ...

  2. java架构之路-(Redis专题)SpringBoot连接Redis超简单

    上次我们搭建了Redis的主从架构,哨兵架构以及我们的集群架构,但是我们一直还未投入到实战中去,这次我们用jedis和springboot两种方式来操作一下我们的redis 主从架构 如何配置我上次已 ...

  3. CVE-2016-5159 利用脏牛漏洞Linux提权复现

    当前路径: /var/www 磁盘列表: / 系统信息: Linux zico 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 ...

  4. jmeter-中文乱码问题

    1.被测系统中问乱码 解决办法:接口请求时添加编码方式UTF-8

  5. 01--Java语言概述与开发环境 最适合入门的Java教程

    Java 程序运行机制 编译型语言: 使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性"翻 译"成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该 ...

  6. typescript 入门教程一

    ##### 从今天开始,持续更新typescript入门教程系列.... 目前ts越来越火,主流的前端框架,好比*angular,vue 3*均是采用ts来编写,所有很多公司的项目都是用**ts**来 ...

  7. MongoDB实现问卷/考试设计

    MongoDB的特点 MongoDB是一个面向文档存储的数据库.在MongoDB中,一条记录叫做document(文档),由类似于JSON结构的键值对组成. 由于类似于MongoDB直接存储JSON的 ...

  8. Java线程切换(一)

    (本文由言念小文原创,转载请注明出处) 一  前言有Android开发经验的同学都清楚,UI的更新必须在主线程中进行,且主线程不能被阻塞,否则系统ANR异常.我们往往做一些数据处理是耗时操作,必须要在 ...

  9. 设计模式(十)Strategy模式

    Strategy模式,就是用来整体地替换算法,可以轻松地以不同的算法解决同一个问题. 还是根据一个示例程序来理解这种设计模式吧.先看一下示例程序的类图. 然后看示例程序代码. package bigj ...

  10. Linux下安装db2V9.7

    vi /etc/hosts(127.0.0.1 localhost192.168.1.53 linux-wmv8) vi /etc/services db2inst1 50000/tcp(加在最后) ...