shell字符串的用法

北城余情 提交于 2020-01-16 02:51:37

shell字符串的用法

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

  • 获取子串:

    注:(左边的第一个字符是用 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:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!