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
下一篇 2015-08-24

相关推荐

  • Linux发行版之间的联系与区别及其哲学思想。

    一、Linux发行版之间的联系与区别。 随着Linux不断发展,Linux所支持的文件系统类型也在迅速扩充。很多的数据中心服务器上都运行着Linux,可以节省大量的许可证费用及维护费用。但伴随着Linux新版本的发行,其中每一个不同版本的Linux所支持的文件系统类型都有所不同。Linux的发行版有数百种之多。 1、Debian:是指一个致力于创建自由操作系…

    Linux干货 2016-10-30
  • 2016-08-12作业

    1、查找/var 目录下属主为root ,且属组为mail 的所有文件 [root@localhost bin]# find /var -user root -group mail /var/spool/mail /var/spool/mail/root   2、查找/var 目录下不属于root 、lp 、gdm 的所有文件 find /var …

    Linux干货 2016-08-15
  • Linux命令帮助及history命令的使用

    1.Linux命令帮助的获取详解 在Linux中获取命令帮助时,内部命令和外部命令的获取方式是有区别的: 即 (1)内部命令:#help COMMAND             #man bash     (2)外部命令:<1> # COMMAND –help &nb…

    Linux干货 2016-08-05
  • Linux系统grep正则表达式

    一、grep命令的使用 首先,我们来了解grep命令,grep (global search regular expression and printing),全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Linux中的grep命令包括、grep, egrep和fgrep 。egrep是grep…

    Linux干货 2017-04-23
  • Linux中的包管理

    1. RPM介绍 rpm是linux中的包管理软件,通过rpm用户可以对rpm包进行查询、安装、卸载、升级和校验等操作。 1.1 查询 查询 -q:可以查看某个包是否已经安装 -qa:查看系统已经安装的所有包 -qi:查询某个安装包的详细情况 -ql:查询安装某个包之后会生成哪些文件 -qc:查询某个软件的配置文件 -qd:查询某个软件的所有文档 &#821…

    Linux干货 2017-04-17
  • 第一周作业:计算机的组成及其功能

    第一周作业 主要是对应了马哥视频前两天共八节课的内容,作业一共有六道题 01.描述计算机的组成及其功能 02.按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别 03.描述Linux的哲学思想,并按照自己的理解对其进行解释性描述 04.说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pw…

    2017-09-12

评论列表(2条)

  • stanley
    stanley 2015-08-24 21:43

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

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

      @stanley谢谢!