数组:存放多个元素的连续内存空间。

  声明数组:bash-4以后支持除默认的0,1,2……还可以自定义索引格式,此类数组称之为“关联数组”  

    声明索引数组:declare -a NAME

    声明关联数组:declare -A NAME

  索引数组赋值:

    索引方式赋值:ARRAY_NAME[INDEX]=value

           ARRAY_NAME=("value1"  "value2" ……)

           ARRAY_NAME=value([0]="value1"  [3]="value2")

    交互式赋值:read -a  ARRAY_NAME

  关联数组赋值

    ARRAY_NAME=([INDEX_NAME1]="VALUE1")  [INDEX_NAME2]="VALUE2").....)

  数组索引:代表元素所在数组的位置属性,从0开始。

    格式:数组名[索引]

    引用数组中某个元素:${ARRAY_NAME[INDEX]}

       当不给出INDEX时默认值为0,引用数组中个某一元素值时一定要使用${}。

      

  数组切片:

    ${ARRAY_NAME[@]:offset:number}

      offset:偏移量,要跳过的元素个数  

      number:要取出的元素个数;省略number,表示取偏移量之后的所有元素

  增加元素:

    ARRAY_NAME[${#ARRAY_NAME[*]}]=

      ${ARRAY_NAME[*]}:数组中元素个数

  删除元素:

    unset ARRAY[INDEX]

字符串处理:

  字符串切片:

    ${var:offset:number},取字符串的子串。

    ${var: -length}:从右侧取length个字符。

      注意:冒8号后一定要有一个空格。

  基于分隔符取子串

    ${var#*word}:

      word:指定的分隔符。

      功能:自左而右,查找var变量中所存储的字符串中,第一次出现的word分隔符,删除字符串开头至此分隔符之间的所有字符。

    ${var##*word}:     

      word:指定的分隔符。

      功能:自左而右,查找var变量中所存储的字符串中,最后一次出现的word分隔符,删除字符串开头至此分隔符之间的所有字符。

      

    ${var%word*}:

      word:指定的分隔符。

      功能:自右而左,查找var变量中所存储的字符串中,第一次出现的word分隔符,删除字符串尾部至此分隔符之间的所有字符。

    ${var%%word*}:

      word:指定的分隔符。

      功能:自右而左,查找var变量中所存储的字符串中,最后一次出现的word分隔符,删除字符串尾部至此分隔符之间的所有字符。

      

  查找替换:

    ${var/PATTERN/SUBSTITUTE}:查找var所表示的字符串中,将第一次被PATTERN所匹配的字符串,替换为SUBSTITUTE所表示的字符串。

    ${var//PATTERN/SUBSTITUTE}:查找var所表示的字符串中,将所有被PATTERN所匹配的字符串,替换为SUBSTITUTE所表示的字符串。

    ${var/#PATTERN/SUBSTITUTE}:查找var所表示的字符串中,行首被PATTERN所匹配的字符串,将其替换为SUBSTITUTE所表示的字符串。

    ${var/%PATTERN/SUBSTITUTE}:查找var所表示的字符串中,行尾被PATTERN所匹配的字符串,将其替换为SUBSTITUTE所表示的字符串。

  查找删除:

    ${var/PATTER}:将var中第一次被PATTERN匹配的字符串删除。

    ${var//PATTER}:将var中所有被PATTERN匹配的字符串删除。

    ${var/#PATTER}:将var中行首被PATTERN匹配的字符串删除。

    ${var/%PATTER}:将var中行尾被PATTERN匹配的字符串删除。

  大小写转换:

    ${var^^}:把var中所有小写字符转换成大写。

    ${var,,}:把var中所有大写字符转换成小写。

  变量赋值:

    ${var:-VALUE}:如果var变量为空或未设置,那么返回value;否则返回var变量的值

    ${var:=value}:如果var变量为空或未设置,那么返回value,并将VALUE赋值给变量var;否则返回var变量的值

    ${var:?ERROR_INFO}:如果var变量为空或未设置,那么返回ERROR_INFO;否则返回var变量的值

    ${var:+VALUE}:如果var变量不为空,那么返回value;

    

  

  

  

linuxshell编程之数组和字符串处理工具的更多相关文章

  1. Linux-Shell编程之数组操作

    源码 #!/bin/bash str="Array - Demo Shell"; echo ${#str} #求字符串長度 #定義 arr=('a' 'b' 'c' 'd' 'e' ...

  2. Linux Shell脚本编程-数组和字符串处理

    数组  1.数组的定义及声明 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合 数组名:整个数组只有一个名字 索引:编号从0开始,属于数值索引:bash的数组支持 ...

  3. shell编程系列4--有类型变量:字符串、只读类型、整数、数组

    shell编程系列4--有类型变量:字符串.只读类型.整数.数组 有类型变量总结: declare命令和typeset命令两者等价 declare.typeset命令都是用来定义变量类型的 decla ...

  4. Arrays -数组工具类,数组转化字符串,数组排序等

    package cn.learn.basic; import java.util.Arrays; /* java.util.Arrays是一个与数组相关的工具类,含有大量静态方法,用来实现数组常见的操 ...

  5. C#编程中的Image/Bitmap与base64的转换及 Base-64 字符数组或字符串的长度无效问题 解决

    最近用base64编码传图片遇到了点问题,总结下. 首先总结下base64编码的逻辑,来自网络:https://www.cnblogs.com/zhangchengye/p/5432276.html ...

  6. Java编程基础——数组和二维数组

    Java编程基础——数组和二维数组 摘要:本文主要对数组和二维数组进行简要介绍. 数组 定义 数组可以理解成保存一组数的容器,而变量可以理解为保存一个数的容器. 数组是一种引用类型,用于保存一组相同类 ...

  7. Java操作字符串的工具类

    操作字符串的工具类 import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintStre ...

  8. OJ——华为编程题目:输入字符串括号是否匹配

    package t0815; /* * 华为编程题目:输入字符串括号是否匹配 * 若都匹配输出为0,否则为1 * 样例输入:Terminal user [name | number (1)] * 样例 ...

  9. js数组的操作及数组与字符串的相互转化

    数组与字符串的相互转化 <script type="text/javascript">var obj="new1abcdefg".replace(/ ...

随机推荐

  1. OptimalSolution(4)--字符串问题(1)简单

    一.判断两个字符串是否互为变形词 问题:给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样且每种字符出现的次数也一样,那么str1与str2互为变形词. 举例:str1=“1 ...

  2. 设计模式(二十)Flyweight模式

    当使用new关键字生成类的实例时,需要给其分配足够的内存空间.当程序中需要大量对象时,如果都是用new关键字来分配内存,将会消耗大量内存空间.Flyweight模式就是尽量避免new出实例,而是通过尽 ...

  3. 身份证号码验证算法(php和js实现)

    原文:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=21126994&id=3938244 http://www.jb ...

  4. 使用ASP.NET Core 3.x 构建 RESTful API - 1.准备工作

    以前写过ASP.NET Core 2.x的REST API文章,今年再更新一下到3.0版本. 先决条件 我在B站有一个非常入门的ASP.NET Core 3.0的视频教程,如果您对ASP.NET Co ...

  5. 星级评分条(RatingBar)的功能与用法

    星级评分条与拖动条有相同的父类:AbsSeekBar,因此它们十分相似.实际上星际评分条与拖动条的用法.功能都十分接近:它们都允许用户通过拖动来改变进度.RatingBar与SeekBar的最大区别在 ...

  6. linux 查看磁盘信息

    一.查看磁盘和分区 ACCB947E:Home zhangsan$ df -h Filesystem Size Used Avail Capacity iused ifree %iused Mount ...

  7. centos下docker离线部署

    安装准备 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化. 环境要求 Centos 安装包下载地址 安装包下载以下 ...

  8. vue2-preview引用时报错解决办法

    1.报错信息 在完全按照官方文档安装引入vue2-preview时出现报错,报错信息如下: 从图中标记处可以知道出错是因为在\node_modules\_vue2-preview@1.0.2@vue2 ...

  9. m76 赛后总结

    这次没有炸的太厉害,只是T3崩了,而且..... 这次的心态并没有因为loj的大吉而崩,反而在经受过上一轮的打击之后变得坚强了,心态也平了,没什么可挂念的,因为我什么都没有,所以发扬光脚的不怕穿鞋的精 ...

  10. unittest使用总结

    unittest简介 Unittest是python内置的一个单元测试框架,主要用于自动化测试用例的开发与执行 简单的使用如下 import unittest class TestStringMeth ...