参考网址:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html

linux shell在编程方面比windows 批处理强大太多,无论是在循环、运算以及数据类型方面都是不能比较的。 下面是在数组方面一些操作的总结。

1、数组定义

[hadoop@Master ~]$ a=(1 2 3 4 5)
[hadoop@Master ~]$ echo $a
1

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

2、数组读取与赋值

  • 获取长度:

[hadoop@Master ~]$ echo ${#a[@]}
4

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

  • 读取:

[hadoop@Master ~]$ echo ${a[0]}
1
[hadoop@Master ~]$ echo ${a[*]}
1 2 3 4

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

  • 赋值:

[hadoop@Master ~]$ a[1]=100
[hadoop@Master ~]$ echo ${a[*]}
1 100 3 4
[hadoop@Master ~]$ a[3]=100
[hadoop@Master ~]$ echo ${a[*]}
1 100 3 100
[hadoop@Master ~]$ a[4]=100
[hadoop@Master ~]$ echo ${a[*]}
1 100 3 100 100

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

  • 删除:

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

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

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

3、特殊使用

  • 分片:

[hadoop@Master ~]$ a=(1 2 3 4 5)
[hadoop@Master ~]$ echo ${a[*]:0:3}
1 2 3
[hadoop@Master ~]$ echo ${a[*]:1:4}
2 3 4 5
[hadoop@Master ~]$ c=(${a[*]:1:4})
[hadoop@Master ~]$ echo ${c[*]:1:4}
3 4 5
[hadoop@Master ~]$ c=(${a[*]:1:2})
[hadoop@Master ~]$ echo ${c[*]:1:1}
3

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

  • 替换:

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

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

linux shell 数组建立及使用技巧的更多相关文章

  1. 转:linux shell 数组建立及使用技巧

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

  2. 转载-Linux Shell 数组建立及使用技巧

    转载自:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html 如侵犯版权,请联系我删除 linux shell在编程方面比win ...

  3. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  4. linux shell 数组的使用

    引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解 ...

  5. Linux Shell 数组

    shell 数组一般都是一维数组. 1. 数组的声明 declare -a arr 该命令将声明一个数组arr,实际上不声明也可以直接定义数组. 2. 数组的初始化 arr=(1 2 3):该命令定义 ...

  6. linux shell数组

    from: http://www.jb51.net/article/34322.htm bash shell只支持一维数组,但参数个数没有限制. 声明一个数组:declare -a array(其实不 ...

  7. linux shell数组赋值方法(常用)

    http://blog.csdn.net/shaobingj126/article/details/7395161 Bash中,数组变量的赋值有两种方法: (1) name = (value1 ... ...

  8. Linux shell —— 数组与关联数组

    使用 declare -A(declare 的用法请使用 help 进行查看,help declare) 进行声明关联数组变量: $ declare -A fruits_price $ fruits_ ...

  9. linux shell实用常用命令

    本文主要介绍Linux Shell的一些使用小技巧收集,非常实用,需要的朋友可以参考下. 查看本机某端口是否被占用 netstat -anpt | grep 22 查看远程某端口是否被开放 echo ...

随机推荐

  1. vue项目中引用jquery

    1.使用npm安装 npm i jquery --S //jquery要小写 2.在package.json文件dependencies里面加入jq 3.在build文件夹的webpack.base. ...

  2. 改变this指向的三种方法

    call.apply.bind三者为改变this指向的方法. 共同点:第一个参数都为改变this的指针.若第一参数为null/undefined,this默认指向window call(无数个参数) ...

  3. jsp登录注册

    只帖源代码,,,,不讲解. 1.Login.jsp <%@ page language="java" import="java.util.*" pageE ...

  4. 调用waitpid的SIGCHLD信号处理函数

    #include <stdio.h> #include <sys/wait.h> void sig_chld(int signo) { pid_t pid; int stat; ...

  5. 【SRM-07 D】天才麻将少女KPM

    Description 天才麻将少女KPM立志要在日麻界闯出一番名堂.KPM上周叒打了n场麻将,但她这次又没控分,而且因为是全市参与的麻将大赛,所以她的名次范围是0..10^5.名次可能等于0是因为K ...

  6. PHP中的会话控制—session和cookie(实现数据传值功能)

    1.session  登录上一个页面以后,长时间没有操作,刷新页面以后需要重新登录. 特点:(1)session是存储在服务器:   (2)session每个人(登陆者)存一份: (3)session ...

  7. Ubuntu18.04中安装cuda的记录

    一.参考: https://blog.csdn.net/QLULIBIN/article/details/78714596 https://www.jianshu.com/p/00c37b09f0f3 ...

  8. C# EF框架调用数据库的函数

    1.在数据库中创建一个自定义函数: REATE FUNCTION [dbo].[f_IsOriginsDisabled] ( ), @needPPTV bit ) RETURNS bit AS BEG ...

  9. 简单SQL语句

    一.基础 模式定义了数据如何存储.存储什么样的数据以及数据如何分解等信息,数据库和表都有模式. 主键的值不允许修改,也不允许复用(不能使用已经删除的主键值赋给新数据行的主键). SQL 语句不区分大小 ...

  10. 剑指Offer-从上往下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路 使用两个队列一个存放节点,一个存放值.先将根节点加入到队列中,然后遍历队列中的元素,遍历过程中,访问该元素的左右节点,再将左右子 ...