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

  声明数组: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;

    

  

  

  

最新文章

  1. U3D学习笔记1: HelloWorld
  2. dede文章内容页增加视频文件
  3. Python模拟删除字符串两边的空白
  4. JQuery 添加节点
  5. C++ 第一次课堂作业
  6. QT mainwindow四件套
  7. (转)MVC,MVP 和 MVVM 的图示
  8. SPCOMM的一些用法注意
  9. ARP欺骗与中间人攻击
  10. Eclipse使用jre的原理与配置
  11. mysql与java的之间的连接
  12. DataList分页-增加自动编号列
  13. Http get方式url参数长度以及大小
  14. javamelody 使用
  15. linux异步IO的两种方式【转】
  16. c++入门之再次探讨类属性
  17. java学习笔记(三):类和对象
  18. Curator的监听
  19. Java中public、private、protect对数据成员或成员函数的访问限制
  20. [bzoj 1270][BeijingWc2008]雷涛的小猫

热门文章

  1. [正确配置]win7 PL/SQL 连接Oralce 11g 64位
  2. django-表单之模型表单(三)
  3. 实战SpringCloud响应式微服务系列教程(第九章)使用Spring WebFlux构建响应式RESTful服务
  4. 用Unity做游戏,你需要深入了解一下IL2CPP
  5. ElasticSearch 中文分词插件ik 的使用
  6. InfluxDB常见疑问与解答 - 数据写入时如何在表级别指定保留策略
  7. API 网关知识看这篇就足够了!
  8. Oracle 相关操作SQL
  9. 用初中数学知识撸一个canvas环形进度条
  10. Data Deduplication Workflow Part 1