zoukankan      html  css  js  c++  java
  • linuxshell编程之数组和字符串处理工具

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

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

        

      

      

      

  • 相关阅读:
    python 开发中的常用功能
    python 栈&队列&列表的区别
    python 内置函数简介及其作用
    python 正则表达式详解
    python scrapy
    python 文件操作
    python 爬虫实例
    浅谈tcp 与udp
    php正则匹配video 中或者img的宽度和高度。
    android技术积累:开发规范
  • 原文地址:https://www.cnblogs.com/wxxjianchi/p/9202275.html
Copyright © 2011-2022 走看看