1. 定义数组:

  var_array=(one two three four five)

2.常用操作

  获取数组长度: ${#var_array[@]}

  获取所有数组元素:  ${var_array[@]} or  ${var_array[*]}

  获取第一个数组元素:${var_array[0]}   数组下标从 0 开始。

  数组元素字符替换:${var_array[@]/x/y}  #最少替换,用y替换x

  数组元素字符替换:${var_array[@]//x/y}  #最多替换,用y替换x

  数组元素删除: "#"  每个元素,从左向右进行最短匹配  ,"##" 最长匹配

  数组元素删除: "%"  每个元素,从右向左进行最短匹配  ,"%%" 最长匹配

例子:

#!/bin/bash

## 定义一个空数组
var_array=() ## 数组赋值,数组下标从 开始
var_array=(china beijing shanghai sshenzhen nanjingg) ## 打印全部数组元素 ${var_array[@]} 或者 ${var_array[×]}
echo "数组元素是:${var_array[@]}" ## 打印数组元素个数
echo "数组总数是:${#var_array[@]}" ## 数组遍历
for ((i=;i < ${#var_array[@]}; i++))
do
echo "第${i}个数组元素是: ${var_array[i]}"
done ## 数组切片
echo "打印第二个元素之后的所有元素:"${var_array[@]:}""
echo "打印第一个元素到第三个元素:${var_array[@]:0:3}"
echo "打印倒数第二个元素开始打印,打印2个元素:${var_array[@]:(-2):2}" ## 根据现有数组,得到一个新数据
new_var_array=()
new_var_array=${var_array[@]::}
echo "新数组是:${new_var_array[@]}" ## 数据替换
## ${array[@]/x/y} 最小匹配替换,每个元素只替换一次
## ${array[@]//x/y} 最大匹配替换,每个元素可替换多次 echo "将i替换xo,一个元素只替换一次:${var_array[@]/i/xo}"
echo "将i替换xo,一个元素替换多次次:${var_array[@]//i/xo}"
echo "将i替换空,一个元素替换多次次:${var_array[@]//i/}" ## 数组删除
## "#" 每个元素,从左向右进行最短匹配
## "##" 每个元素,从左向右进行最长匹配
## "%" 每个元素,从右向左进行最短匹配
## "%%" 每个元素,从右向左进行最长匹配 echo "将s开头的字符,单个删除:${var_array[@]#s*}"
echo "将s开头的字符,全部删除:${var_array[@]##s*}"
echo "将s开头的字符,全部删除:${var_array[@]%*g}"
echo "将s开头的字符,全部删除:${var_array[@]%%*g}"

结果截图:

shell 数组操作的更多相关文章

  1. mongoDB的shell数组操作器

    http://www.2cto.com/database/201304/205024.html mongoDB数组操作器   $push会向数组末尾加入一个元素,如果数组不存在,则会创建这个数组. 增 ...

  2. shell数组操作

    1.数组定义,shell使用一对括号表示数组,数组元素间用"空格"分隔 # 空数组arr1 arr1=() # 数组arr2,成员分别是1, 2, 3, 4, 5, 6 arr2= ...

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

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

  4. Shell系列(38)- 数组操作→取值、遍历、替换、删除

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

  5. Linux Shell 数组

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

  6. Mongodb DB shell数据操作

    shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的. Ø 数据库 1.Help查看命令提示 help db.help(); db.yo ...

  7. shell字符串操作之cut---实现字符串截取

    shell中(字符串截取) cut是以每一行为一个处理对象的,这种机制和sed是一样的.(关于sed的入门文章将在近期发布) 2 cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切 ...

  8. shell数组应用

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

  9. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

随机推荐

  1. 为Visual SVN使用签名后的域名证书

    装了个VisualSVN Server管理代码,可每次浏览的时候都会提示证书有问题,要不要继续神马的,好烦人,于是搜索了一下免费SSL证书,申请了一个,虽然不是绿的,但总算是不报问题了. 下面是整个过 ...

  2. BLOCK方式实现OC程序中多个页面判定用户是否登录

    在程序中经常会遇到这种情况,用户刚进入我们软件的时候我们是无需要求用户登录的,但是在下面的页面中,例如收藏,购买等页面的时候,显然在多个页面需要多次判定用户是否登录.试着用block简单的实现了一下该 ...

  3. pycharm的MySQLdb模块导不进去时解决办法

    一.Windows下python2.7安装MySQLdb模块 根据Python多少位下载对应版本: 32位:https://pypi.python.org/pypi/MySQL-python/1.2. ...

  4. django之单表操作

    1.查询方法: <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <3> get(**kwargs ...

  5. Django框架视图类

    类视图 在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图.使用类视图可以使用类的一些特性,比如继承等. View django.views.generic.base.View是主 ...

  6. 我的Android进阶之旅------>解决:debug-stripped.ap_' specified for property 'resourceFile' does not exist.

    1.错误描述 更新Android Studio到2.0版本后,出现了编译失败的问题,我clean project然后重新编译还是出现抑郁的问题,问题具体描述如下所示: Error:A problem ...

  7. Java Concurrent happens-before

    happens-before relation on memory operations such as reads and writes of shared variables. The resul ...

  8. 使用win32ole进行页面加载和跳转

    require "win32ole" #包含库 ie = WIN32OLE.new('internetExplorer.Application') ie.visible = tru ...

  9. Deep Learning -- 数据增强

    数据增强 在图像的深度学习中,为了丰富图像训练集,更好的提取图像特征,泛化模型(防止模型过拟合),一般都会对数据图像进行数据增强,数据增强,常用的方式,就是旋转图像,剪切图像,改变图像色差,扭曲图像特 ...

  10. I2C通信

    项目之前研究了I2C通信协议的实现,完成FPGA对视频解码芯片SAA7111A的初始化配置,设计实现了I2C主机对从机(SAA7111A)32个寄存器的写操作,因此只简单实现了I2C的写时序. 这次重 ...