shell脚本编程之数组

bash仅支持一维数组,类型声明:

declare -i    : 表示数值

declare -a  :表示普通数组(默认,可不用声明类型)

declare -A :表示关联数组(必须声明类型,bash需4.0以上版本才支持,可通过bash –version查看版本


一、普通数组(用数字为下标)

1.1数组赋值(修改值)方式

a).单个元素赋值

a[0]=1
a[2]=2

b).一次对全部元素赋值

a=(1 2 3)

c).按索引进行赋值

a=([0]=apple [1]=banana [2]=orange)

d).命令替换

a=(/var/log/*.log)

e).用户输入

read -a array

1.2数组长度   

echo ${#array[@]}   数组的长度(建议查看方式)
echo ${#array[*]}   数组的长度

用以下示例来区分两者区别:

1.png

执行结果如下($*用双引号引起来后,所有的参数是一个串,查看所有元素时建议用$@):

2.png

1.3其它常用

echo {array[2]}         下标为2的元素值(元素从0开始计数)   
array2=(${array1[@]})   数组复制
echo ${!array[@]}       获取所有的下标


二、关联数组(可用非数字字符做下标,普通数组功能在关联数组下都可实现)

关联数组需事先声明,方法为:declare -A array

示例:

[root@localhost ~]# declare -A test
[root@localhost ~]# test=([apple]=a [banana]=b [orange]=o)
[root@localhost ~]# echo ${test[@]}
o a b
[root@localhost ~]# echo ${!test[@]}
orange apple banana
[root@localhost ~]#


三、数组切片

${array[@]:offset:number}   offset: 偏移的元素个数    number: 取出的元素的个数
${array[@]:offset}          取出偏移量后的所有元素
${array[@]}                 取出所有元素

示例:

[root@localhost ~]# array=(1 2 3)
[root@localhost ~]# echo ${array[@]}
1 2 3
[root@localhost ~]# echo ${array[@]:1}
2 3
[root@localhost ~]# echo ${array[@]:1:1}
2


四、删除数组元素

unset ARRAY[index]

示例:

[root@localhost ~]# echo ${array[@]}
1 2 3
[root@localhost ~]# unset array[1]
[root@localhost ~]# echo ${array[@]}
1 3


五、综合示例

示例1:写一个脚本,生成10个随机数,保存至数组中;而后显示数组下标为偶数的元素;

方法一:

3.png

方法二:

4.png

示例2:复制一个数组中下标为偶数的元素至一个新数组中

5.png

示例3:生成10个随机数,升序排序

6.png

示例4:打印九九乘法表

7.png

原创文章,作者:老鼠上了猫,如若转载,请注明出处:http://www.178linux.com/7109

(0)
老鼠上了猫老鼠上了猫
上一篇 2015-08-24 21:33
下一篇 2015-08-24 21:44

相关推荐

  • 常见HTTP code大全

    1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。 代码 说明 100 (继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。  101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。 2xx (成功)表示成功处理了请求的状…

    Linux干货 2016-09-19
  • 挂载

    挂载的相关介绍

    Linux干货 2017-12-10
  • 8月20日程序包管理

    程序包管理 概述    API:Application Program Interface应用编程接口    ABI:Application Binary Interface应用二进制接口    Unix-like,  …

    Linux干货 2016-08-21
  • 通过fast-cgi方式在三台主机部署phpwind并设置为https站点

    通常来说httpd用来处理静态的网页请求,动态的资源请求以前是通过CGI的方式进行处理的,但是CGI的方式的处理过程是这样:有动态资源请求,服务器会fork一个CGI进程进行资源处理,处理完成后这个进程会退出,当再有新的动态资源请求,又会fork一个进程,这样的效率是很低的。后来就有了通过加载php模块的方式,即:httpd服务器启动之后会自动加载php动态…

    2017-06-04
  • 初识操作系统和linux

    初识操作系统和linux 1.计算机系统由硬件系统和软件系统两大部分组成:是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备。   2.世界上第一台计算机是1946年诞生在美国宾州大学。   3.冯·诺依曼体系结构:1946年数学家冯·诺依曼于…

    Linux干货 2017-02-14
  • 运维自动化之系统安装

    自动化安装系统,cobbler的安装使用

    Linux干货 2018-01-15

评论列表(2条)

  • stanley
    stanley 2015-08-24 21:43

    实战的案例非常有不错,很有吸引力

    • 老鼠上了猫
      老鼠上了猫 2015-08-27 19:18

      @stanley谢谢!