shell字符串的用法

shell字符串的用法

 注意:shell4.2和shell4.1会有差别,较低版本的shell可能不支持某些功能
  • 获取字符串长度:$

  • 获取子串:

    注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)

    1. ${string:position} 从左边position开始到最后
    2. ${string:position:length} 从position开始length个字符
    3. ${string:begin:-end} 表示从左边begin个字符开始,到从右边end个字符结束
    4. $(string:(-postion)) 如果使用负数,表示从positon处开始到最右边所有的字符;注意负数必须使用括号
    5. $(string:(-postion):length)
    6. ${var:0-start:len} 从右边第几个字符开始以及字符的个数
    7. ${var:0-start} 从右边第几个字符开始一直到结束
  • 贪婪和非贪婪:var=http://www.aaa.com/123.htm

    • # 号截取,删除左边字符,保留右边字符。 (非贪婪匹配)

      echo ${var#*/}

      其中 var 是变量名,# 号是运算符,*/ 表示从左边开始删除第一个 / 号及左边的所有字符
      即删除 http:/
      结果是 :/www.aaa.com/123.htm

    • ## 号截取,删除左边字符,保留右边字符。(贪婪匹配)

      echo ${var##*/}

      (##*/) 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
      即删除http://www.aaa.com/

      结果是 123.htm

    • %号截取,删除右边字符,保留左边字符 (非贪婪匹配)

      echo ${var%/*}

      %/* 表示从右边开始,删除第一个 / 号及右边的字符

      结果是:http://www.aaa.com

    • %% 号截取,删除右边字符,保留左边字符 (贪婪匹配)

      echo ${var%%/*}

      %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
      结果是:http:

posted @ 2019-03-22 17:06  脚本小娃子  阅读(351)  评论(0编辑  收藏  举报