和其他的语言类似,数组在shell中的应用也比较广泛。比如在处理配置文件时,需要把解析到的配置选项保存在数组中,方便后续的使用。
(1)数组的定义
在shell中,数组的使用比较简单,基本的定义方法有如下4种:
方法1:

1

2

3

names[0]=wangwei;

names[1]=david;

names[2]=rose;

方法2:

1

names=([0]=wangwei [1]=david [2]=rose);

方法3:

1

names=(wangwei david rose);

方法4:

1

names=(wangwei [5]=david rose);

(2)数组的操作
在shell中,可以用如下的方式去操作一个数组变量

1

2

3

4

5

6

7

8

9

#!/bin/bash

names=(wangwei david rose);

${names[1]}         #获取数组中的第1个元素的内容.

${names}=${names[0]}    #如果没有索引下标, 默认为数组的第0个元素.

${names[*]}         #数组的所有元素.

${names[@]}         #同${names[*]}.

${#names[1]}        #获取数字第1个元素的内容的长度.

${#names[*]}        #获取数组中的元素个数.

${#names[@]}        #同${#names[*]}.

(3)把一个以IFS分割的字符串转换为数组
实际上这里的操作技巧本质上利用了本文中第一部分讲到的数组定义的方法3。
实现的方法有两种:
方法1:修改IFS方法
shell中默认的IFS变量为空格,因此需要把IFS变量修改,具体的方法如下代码所示:

1

2

3

4

5

6

#!/bin/bash

str="wangwei;david;rose";

IFS=”;”;

arr=($str);

#接下来就可以利用本文第二部分讲到的内容,操作数组arr了。

这种方法在使用时需要注意,修改IFS可能会影响后面shell脚本的执行,因此需要在使用前保存老的IFS,使用完毕后再把IFS设置为老的IFS。

方法2:
利用shell提供个字符串操作语法:${str//pattern/replace}。关于该语法的含义请参考另一片博客linux运维命令笔记。
具体的代码如下所示:

1

2

3

4

5

6

#!/bin/bash

str="wangwei;david;rose";

str=${str//;/ };

arr=($str);

#接下来就可以利用本文第二部分讲到的内容,操作数组arr了。

在实际中,可以使用上述的任意一种方式,正所谓:萝卜青菜,各有所好嘛。
但是根据个人的使用经验,个人更倾向于使用方法2。

shell数组 IFS相关推荐

  1. 【shell】shell 数组处理

    目录 极简 简述 遍历数组 空数组 数组做参数 数组添加元素 数组去重复 Shell数组拼接 判断数组是否包含某个元素 Shell删除数组元素 关联数组 awk数据列存入数组 极简 array_nam ...

  2. linux shell 数组添加元素

    向Shell数组添加元素有多种方法,每种方法在使用时都有一些需要注意的地方,没有见过这方面的总结资料,所以自己总结一下. 直接下标添加 array_name[index]=value 最简单的添加方式 ...

  3. shell脚本编程学习之路-shell数组

    1.数组的介绍 在开发shell脚本时,定义变量采用的形式为"a=1;b=2;c=3",变量多了再一个一个定义就比较麻烦,并且要是有多个不确定的变量内容也会难以进行变量控制,于是为 ...

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

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

  5. Shell笔记9——Shell数组的应用实践

    本文主要讲解Shell脚本开发中数组的知识与实践 目录: 1.Shell数组介绍 2.Shell数组的定义与常用实践 3.Shell数组脚本开发实践 4.shell数组的重要命令 5.Shell数组相 ...

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

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

  7. linux shell 数组对比,bash shell之数组使用(牛逼篇)

    这次写脚本时用到了bash shell数组,当初做法是配置文件里面写成数组形式A=(element1 element2 element3 .... element4),然后一个脚本读取这个配置文件,于 ...

  8. Shell数组以及排序算法

    Shell数组以及排序算法 数组 一.定义数组 1.数组包括的数据类型 2.获取数组长度 3.读取某个下标赋值 二.数组遍历 三.数组切片 四.数组替换 五.数组删除 六.数组追加元素 七.向函数传数 ...

  9. bash shell数组模拟队列queue和shell数组使用技巧

    一 shell数组操作模拟队列queue或者栈stack http://www.tech-recipes.com/rx/911/queue-and-stack-using-array/ here is ...

最新文章

  1. Java 重入锁 ReentrantLock 原理分析
  2. 操作系统【五】分段内存管理+段页式内存管理
  3. 机器学习算法总结--SVM
  4. 4、requests-基础
  5. xlswriter-用于Excel 2007+XLSX文件中读取数据
  6. BootStrap-
  7. SQLServer:执行计划
  8. Linux使用FlowScan
  9. java应用程序如何编译运作_开发Java应用程序的基本步骤是: 1 编写源文件, 2.编译源文件, 3.运行程序。_学小易找答案...
  10. 济南python工资一般多少-济南Go全栈区块链课程
  11. java设置日历_java – 设置日历实例的时间
  12. 线程间通信与协作方式之——wait-notify机制
  13. 二维码解析易语言代码
  14. 基于百度万年历定制化 1
  15. matlab 求虚数的反正切,matlab中的反正切函数
  16. 跨专业北邮计算机考研,北京邮电大学跨专业考研心得
  17. 函数定义涉及的三要素C语言,(函数定义与三要素答案.doc
  18. 刚入职场需要用到的5个顶尖自学网
  19. 开源阅读书源_最好用的阅读软件之一
  20. 【通信原理 入坑之路】——信息论部分 之 离散无记忆信源的等长编码

热门文章

  1. 当Ubuntu安装软件碰到找不到安装包时E: Package ‘unzip‘ has no installation candidate
  2. 计算机组成acc什么意思,计算机组成作业老师给的答案[沐风教育]
  3. 电脑版微信头像无法显示并且不能显示表情
  4. IDEA创建SSM(Spring+SpringMVC+Mybatis)项目-Jar包版
  5. Greenplum查看表/库大小、进程、表膨胀处理(sql语句)
  6. 手绘与码绘的比较---模拟风吹树动
  7. python_cv2_图片黑白操作
  8. 美的发布行业首支说唱MV,打造懂年轻人的美的微晶冰箱
  9. win11桌面改成win7桌面的设置方法
  10. 用Scipy实现K-means聚类算法