shell 截取字符串

  • ${#var}
    获得字符串的长度
str="100%200%300"
echo ${#str}

11
  • ${var#[#]}
    截取字符串头部匹配的字符串,获取尾部子字符串
    ${var#} 最小限度的截取
    ${var##} 最大限度的截取
str="100%200%300%300%200%100"
echo "{str#1}=========="${str#1}
echo "{str#*0}=========="${str#*0}
echo "{str#0}=========="${str#0}
echo "{str##*3}=========="${str##*3}
echo "{str##*2}=========="${str##*2}


{str#1}==========00%200%300%300%200%100
{str#*0}==========0%200%300%300%200%100
{str#0}==========100%200%300%300%200%100
{str##*3}==========00%200%100
{str##*2}==========00%100

  • ${var%[%]}
    截取字符串尾部匹配的字符串,获取头部子字符串
    ${var%} 最小限度的截取
    ${var%%} 最大限度的截取
str="100%200%300%300%200%100"
echo "{str%0}=========="${str%0}
echo "{str%2*}=========="${str%2*}
echo "{str%%2*}=========="${str%%2*}

{str%0}==========100%200%300%300%200%10
{str%2*}==========100%200%300%300%
{str%%2*}==========100%

  • ${var:start[:len]}
    从左边start 截取 ,没有len参数即从start 位开始截取所有 ,有len参数即从start位开始截取len 个字符
str="100%200%300%300%200%100"
echo "{str:2}=========="${str:2}
echo "{str:2:5}=========="${str:2:5}

{str:2}==========0%200%300%300%200%100
{str:2:5}==========0%200
  • ${var:0-start[:len]}
    从右边start 截取 ,没有len参数即从右边start 位开始向后截取所有 ,有len参数即从start位开始向后截取len 个字符,start 不能超过字符串的长度
str="100%200%300%300%200%100"
echo "{str:0-20:5}=========="${str:0-20:5}
echo "{str:0-30:5}=========="${str:0-30:5}
echo "{str:0-4}=========="${str:0-4}


{str:0-20:5}==========%200%
{str:0-20:5}==========
{str:0-4}==========%100
上一篇:性能测试场景设计


下一篇:有余额2000,两个线程每次取200 (Thread方法锁)