数组的定义

  何为数组?学过计算机编程语言的同学都知道,数组的特性就是一组数据类型相同的集合(不包括有一些编程语言提出来的关联数组的概念)。那么shell中数组是怎么定义的呢,我们来看两种数据类型:一是数值类型,二是字符串类型;虽然shell本身是弱类型的,但也可以这么区分。

  数值类型的数组:一对括号表示数组,数组中元素之间使用“空格”来隔开。

  举个列子:

  arr_number=(1 2 3 4 5);

  字符串类型数组:同样,使用一对括号表示数组,其中数组中的元素使用双引号或者单引号包含,同样使用“空格”来隔开。

  arr_string=("abc" "edf" "sss"); 或者 arr_string=('abc' 'edf' 'sss');

数组的操作

  我们使用数值类型数组arr_number=(1 2 3 4 5)做为源数组进行相关的讲解:获取数组长度,读取某个下标的值,对某个下标赋值,删除、分配和替换以及遍历。提一个知识点,我们在shell里面想获取某个变量的值,使用$符开头,如:$a或者${a}即可。

  获取数组长度

  arr_length=${#arr_number[*]}或${#arr_number[@]}均可,即形式:${#数组名[@/*]} 可得到数组的长度。

  读取某个下标的值

  arr_index2=${arr_number[2]},即形式:${数组名[下标]}

  对某个下标赋值

  这里需要提出两个问题:

    第一个问题是如果该下标元素已经存在,会怎么样?

    答:会修改该下标的值为新的指定值。

    例如:arr_number[2]=100,数组被修改为(1 2 100 4 5)

    第二个问题是如果指定的下标已经超过当前数组的大小,如上述的arr_number的大小为5,指定下标为10或者11或者大于5的任意值会如何?

    答:新赋的值被追加到数组的尾部。

    例如:arr_number[13]=13,数组被修改为(1 2 100 4 5 13)

  删除操作

    清除某个元素:unset arr_number[1],这里清除下标为1的数组;

    清空整个数组:unset arr_number;

  分片访问

    分片访问形式为:${数组名[@或*]:开始下标:结束下标},注意,不包括结束下标元素的值。

    例如:${arr_number[@]:1:4},这里分片访问从下标为1开始,元素个数为4。

  模式替换

    形式为:${数组名[@或*]/模式/新值}

    例如:${arr_number[@]/2/98}

  数组的遍历

    数组遍历我们使用for语句来演示:   

for v in ${arr_number[@]}; doecho $v;
done

linux shell之数组相关推荐

  1. linux shell 中数组的定义和for循环遍历

    linux shell中的语法和普通编程语言 c/c++  java 的不太一样,平时用的不多,所以总是记不住,写脚本才会去查怎么用.今天突然被问到数组怎么去遍历.平时写shell脚本也经常遍历数组, ...

  2. linux shell 字符串 数组,bash shell函数返回数组字符串

    #!/bin/bash # script:getselfvar.sh # 每个脚本中都在末尾追加了一段特殊的域名ip序列,需要将这段序列存放到数组变量中,供 # 脚本使用,例子中的ip和域名是处理过的 ...

  3. Linux shell awk数组使用

    awk中使用数组 一.数组格式 数组是一个包含一系列元素的表. 格式如下:     abc[1]="xiaohong"     abc[2]="xiaolan" ...

  4. Linux shell 中的数组和关联数组

    写在前面的话 我用开始废柴了,这个又是写给我自己看的了. 普通数组 1.数组的定义 在Linux shell中定义一个普通的数组很简单,首先我们先给数组命名(当然要符合所有的命名规则咯).定义数组的一 ...

  5. linux shell 创建序列数组(list,array)方法

    from: http://www.cnblogs.com/chengmo/archive/2010/10/14/1851517.html 关于linux数组定义,以及生成方法,请看:linux she ...

  6. linux shell数组深入学习理解

    本文为大家介绍linux shell数组的相关知识,并提供了充足的例子供参考,这么好的东东,千万不要错过 bash shell只支持一维数组,但参数个数没有限制. 声明一个数组: declare -a ...

  7. linux shell数组定义、元素获取及其长度获取

    linux shell数组定义.元素获取及其长度获取

  8. linux shell带索引下标遍历数组

    linux shell带索引下标遍历数组 for(( i=0;i<${#tmp_arr[@]};i++));do# go get ${tmp_arr[i]}@masterecho ${tmp_a ...

  9. Linux Shell脚本入门教程系列之(六)Shell数组

    本文是Linux Shell脚本系列教程的第(六)篇,更多shell教程请看:Linux Shell脚本系列教程 Shell在编程方面非常强大,其数组功能也非常的完善,继上一篇之后,今天就为大家介绍下 ...

最新文章

  1. C#结合js 上传文件和删除文件(技术点有:asp.net mvc ,nhibernate,ajax等)
  2. 蚂蚁科技 Service Mesh 落地实践与挑战
  3. 【Python3 爬虫】03_urllib.error异常处理
  4. boost::math::tools::simple_continued_fraction用法的测试程序
  5. 浅谈一致性Hash原理及应用
  6. Android 应用内直接跳转酷市场
  7. mysql insert 二进制_MYSQL 插入二进制数的 2 种方法。
  8. 猫狗动物声音模拟器微信小程序源码
  9. MOSS2007服务器端的安装与基本配置
  10. xp 与 windows 7 共享收藏夹
  11. oppo r9s 解bl锁,刷入第三方recovery
  12. Pandownload 百度网盘光速下载 十分简单 一秒破解
  13. 计算机动漫设计与游戏制作课程,有关计算机动漫与游戏制作专业介绍
  14. Spark 学习笔记——001【spark-mysql+spark-hive】
  15. WordPress-Tony极简免费单栏博客主题
  16. C# DLL资源文件打包(图片、JS、CSS)[WebResource]
  17. (1)Part01-项目介绍-01-在线教育行业介绍
  18. java请输入三个成绩 求平均分_Java编程,定义一个学生类,输入3个学生数据,输出平均分和总分...
  19. 春节词汇 Spring Festival Words
  20. MTK工具sigma的使用

热门文章

  1. 视频直播软件开发过程中需要解决的“老朋友”...
  2. iOS中的SEl和IMP到底是什么
  3. VR的风口,让UWA借你一双翅膀
  4. Install Qt5 on Ubuntu 16.04
  5. maven打包跳过Test
  6. asp.net弹出div层,并把弹出层上的值赋值给界面
  7. Ajax 网页异步调用
  8. free命令输出详解
  9. 设计模式(19)-Observer Pattern
  10. 5G会用什么样的语音通信方案?