`
jackchen0227
  • 浏览: 147204 次
  • 性别: Icon_minigender_1
  • 来自: 帝都
社区版块
存档分类
最新评论

[zz]shell编程之数组

 
阅读更多

http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html

这个博客的shell编程的资料很全面,推荐一下

linux shell在编程方面比windows 批处理强大太多,无论是在循环、运算。已经数据类型方面都是不能比较的。 下面是个人在使用时候,对它在数组方面一些操作进行的总结。

 

1.数组定义

 可以使用declare -a array #array将被视为数组

[chengmo@centos5 ~]$ a=(1 2 3 4 5)
[chengmo@centos5 ~]$ echo $a
1

 

一对括号表示是数组,数组元素用“空格”符号分割开。

 

2.数组读取与赋值(基本的读取和赋值同c中的基本一样)

  • 得到长度

[chengmo@centos5 ~]$ echo ${#a[@]}
5

用${#数组名[@或*]} 可以得到数组长度

  • 读取

[chengmo@centos5 ~]$ echo ${a[2]}
3

[chengmo@centos5 ~]$ echo ${a[*]}
1 2 3 4 5   

用${数组名[下标]} 下标是从0开始  下标是:*或者@ 得到整个数组内容

  • 赋值:

[chengmo@centos5 ~]$ a[1]=100

[chengmo@centos5 ~]$ echo ${a[*]}
1 100 3 4 5

 

[chengmo@centos5 ~]$ a[5]=100    
[chengmo@centos5 ~]$ echo ${a[*]}

1 100 3 4 5 100

直接通过 数组名[下标] 就可以对其进行引用赋值,如果下标不存在,自动添加新一个数组元素

  • 删除:

[chengmo@centos5 ~]$ a=(1 2 3 4 5)
[chengmo@centos5 ~]$ unset a
[chengmo@centos5 ~]$ echo ${a[*]}

[chengmo@centos5 ~]$ a=(1 2 3 4 5)
[chengmo@centos5 ~]$ unset a[1]  
[chengmo@centos5 ~]$ echo ${a[*]}
1 3 4 5
[chengmo@centos5 ~]$ echo ${#a[*]}
4

直接通过:unset 数组[下标] 可以清除相应的元素,不带下标,清除整个数据。

 

 

3.特殊使用

  • 分片:

[chengmo@centos5 ~]$ a=(1 2 3 4 5)
[chengmo@centos5 ~]$ echo ${a[@]:0:3}
1 2 3
[chengmo@centos5 ~]$ echo ${a[@]:1:4}
2 3 4 5

[chengmo@centos5 ~]$ c=(${a[@]:1:4})
[chengmo@centos5 ~]$ echo ${#c[@]}
4
[chengmo@centos5 ~]$ echo ${c[*]}
2 3 4 5

直接通过 ${数组名[@或*]:起始位置:长度} 切片原先数组,返回是字符串,中间用“空格”分开,因此如果加上”()”,将得到切片数组,上面例子:c 就是一个新数据。

  • 替换:

[chengmo@centos5 ~]$ a=(1 2 3 4 5)   
[chengmo@centos5 ~]$ echo ${a[@]/3/100}
1 2 100 4 5
[chengmo@centos5 ~]$ echo ${a[@]}
1 2 3 4 5
[chengmo@centos5 ~]$ a=(${a[@]/3/100})
[chengmo@centos5 ~]$ echo ${a[@]}    
1 2 100 4 5

调用方法是:${数组名[@或*]/查找字符/替换字符} 该操作不会改变原先数组内容,如果需要修改,可以看上面例子,重新定义数据。

 

从上面讲到的,大家可以发现linux shell 的数组已经很强大了,常见的操作已经绰绰有余了。

分享到:
评论

相关推荐

    zz.zip_动态数组输出相反

    在编程领域,动态数组是一种非常常见且实用的数据结构,它允许我们在运行时调整数组的大小。这个主题“zz.zip_动态数组输出相反”涉及到利用动态数组处理数字序列,并输出其相反的结果。在这个场景中,我们可以深入...

    linux 系统下的shell编程

    ### Linux系统下的Shell编程知识点详解 #### 一、Shell编程概览 Shell编程是一种重要的Linux系统管理技能,它允许用户通过编写脚本来自动化常见的任务,提高工作效率。在Linux环境中,Shell既是用户与操作系统交互...

    Shell脚本编程.docx

    Shell脚本编程基础知识点 Shell 脚本编程是 Linux 操作系统中的一种自动化工具,允许用户通过编写脚本来自动执行重复的任务。下面是 Shell 脚本编程的基础知识点: 变量 * 变量声明:在 Shell 中,变量可以通过...

    Shell脚本编程基本知识

    Shell脚本编程是一种在Linux和Unix系统中广泛使用的自动化工具,它允许用户通过编写一系列命令来执行复杂的任务,从而提高工作效率。Shell脚本是通过Shell解释器执行的,这个解释器接收用户输入的命令并执行。以下是...

    python算法数据结构课程视频含代码之数组和动态数组1G

    ### Python算法数据结构课程知识点:数组与动态数组 ...数组是编程中最常用的数据结构之一,掌握数组的使用对于学习更复杂的算法和数据结构非常重要。希望本课程能帮助大家更好地理解和使用数组。

    base zz zz zz zz

    base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz

    网络实训报告(unix实验报告)

    实验报告涵盖了四个关键部分:UNIX入门、vi编辑器、UNIX文件系统和UNIX Shell编程。以下是对每个部分的详细解释: **实验一:UNIX入门** 1. **UNIX操作系统历史**:UNIX系统起源于1960年代末,由贝尔实验室的Ken ...

    【4】shell脚本编程.ppt

    ### Shell脚本编程知识点概述 #### 一、Shell脚本的重要性 - **提高效率**:Shell脚本能够显著提升用户操作以及系统管理员进行系统管理的效率。 - **自动化任务**:通过编写脚本来自动化日常任务,减少重复劳动。 -...

    一组新的多维数组模板类

    //说明:只有动态数组才能resize, 还有将来的shared_array, zz 6.赋值: da3 = db3;; sa1 = sb1;; da1 = db1;; 静态数组维度不一样不能赋值,否则会引起编译错误 动态数组和丢失了静态大小成为了...

    shell特殊字符含义

    在Shell编程中,特殊字符扮演着非常重要的角色,它们能够帮助开发者更加高效地完成脚本编写、控制流程以及处理输入输出等任务。下面将详细介绍Shell编程中的一些关键特殊字符及其用途。 #### 1. **符号类特殊字符**...

    高级编程培训-编程语句入门Part 3.pptx

    【高级编程培训-编程语句入门Part 3.pptx】是关于海克斯康(PC-DMIS)软件的脱机编程高级培训资料,重点介绍了编程语句的基础知识。这份讲义涵盖了多个关键概念,包括赋值功能、注释、流程控制语句以及特征赋值等,...

    腾控科技 T920可编程控制器-用户手册v1.2.0.pdf

    根据提供的文件内容,以下是关于腾控科技T920可编程控制器的知识点: 一、T920可编程控制器概述 腾控科技T920可编程控制器是T900系列PLC中的一款产品,具有以下特点: - 使用最大频率72MHz的ARM工业级CPU。 - 配置...

    VC++动态链接库(DLL)编程深入浅出(zz).doc

    【VC++动态链接库(DLL)编程深入浅出】 动态链接库(DLL)在Windows编程中扮演着重要的角色,它是一种代码和数据共享的方式。DLL文件可以被多个应用程序同时使用,减少了内存占用,并且允许开发者在不修改已发布程序的...

    基于Java与HTML的studyjava-zz设计源码,深入探索Java编程新视野

    该项目为“studyjava-zz”设计源码,深入探索Java编程新视野,共计包含549个文件,涵盖209个Java源代码文件、74个Git忽略文件、70个项目配置文件、68个classpath文件、66个偏好设置文件、25个Markdown文档、16个XML...

    ZZ-2022010 机器人技术应用赛项赛题.zip

    2. **机器人编程**:比赛可能会涉及到各种编程语言,如C++、Python或RoboLogix,用于编写控制机器人的指令。编程能力是实现机器人自动化任务的关键。 3. **传感器技术**:机器人感知环境主要依赖于各种传感器,如...

    c语言 函数习题编程及答案

    函数 zz 使用循环交换数组元素,实现矩阵转置。 优点 * 使用函数将复杂的计算逻辑封装起来,提高代码的可读性和维护性。 * 使用循环可以高效地实现矩阵转置。 * 输出结果可以直观地显示转置后的矩阵。 缺点 * ...

    ZZ561401.CAB

    ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB

    wincc AX NF ZZ

    wincc SIMATIC WinCC是第一个使用最新的32位技术的过程监视系统,具有良好的开放性和灵活性。 从面市伊始,用户就对SIMATIC WinCC印象深刻。

    算法文档无代码后缀数组算法文档无代码后缀数组

    5. 算法文档、范文、模板和素材对学习算法以及编程实践有着重要作用。它们不仅提供了理论知识,而且提供了实际操作的示例,有助于加深理解并快速上手。 6. 软件和插件的分类和选择对于实现特定功能至关重要。了解和...

Global site tag (gtag.js) - Google Analytics