shell的字符串以及字符串的处理

shell的字符串定义

  • shell 的字符串可以用单引号也可以用双引号,也可以不用引号

    • 双引号:里面的所有特殊字符都会被解释,如果不想被解释加上\
    • 单引号:里面的任何字符都会原样输出,不会做任何的解释
      name     =Gay
      string   ='hello,my name is $name'
      string0  ="hello,my name is $name"
      string1  ="hello,my name is \$name"
      
      @echo $string
      @echo $string0
      @echo $string1

    运行结果为:
    hello, my name is $name 特殊字符 $ 没有被解释
    hello, my name is Gay 特殊字符 $ 被解释了
    hello, my name is $name 转义斜杠 \ 关闭了特殊字符的解释功能

shell字符串的拼接

  • ${variable}.cvariable 变量后面拼接上 .c
  • ${variable}${var1}variable 变量后面拼接上 var1 变量
var1  =hello
var2  =",I am Gay"
var3  =${var1}.c
var4  =${var1}${var2}

@echo $var3
@echo $var4

运行结果:
hello.c
hello,I am Gay

shell字符串的截取

  • 第一种方法:按字符串截取
    • % :从字符串的结尾开始查找,匹配到离开头最近的符合的字符串,匹配到的字符串被删除
    • # :从字符串的开头开始查找,匹配到离结尾最近的符合的字符串,匹配到的字符串被删除
    • %%:从字符串的结尾开始查找,匹配到离开头最远的符合的字符串,匹配到的字符串被删除
    • ##:从字符串的开头开始查找,匹配到离结尾最远的符合的字符串,匹配到的字符从被删除
  • 第二种方法:按位置截取
    • ${var:0} :从字符串的左边第一个字符开始到最后一个字符,被取出来
    • ${var:0:5} :从字符串的左边第一个字符开始取出其中的5个字符
    • ${var:0-1} :从字符串的右边第一个字符开始到字符串的最左边的一个字符,被取出来
    • ${var:0-1:5}:从字符串的右边第一个字符串开始取出其中的5个字符
string   ="http://www.sohu.com/find/something"   # '*' 符号匹配任意长度的任意字符

var1 =${string%/*}     #从结尾开始查找直到遇到第一个"/"字符串,  '*'匹配"/"之后所有的字符串
var2 =${string%%/*}    #从结尾开始查找直到遇到最后一个"/"字符串,'*'匹配"/"之后的所有字符串
var3 =${string#*/}     #从开头开始匹配直到遇到第一个"/"字符串,  '*'匹配"/"之前的所有字符串
var4 =${string##*/}    #从开头开始匹配直到遇到最后一个"/"字符串,'*'匹配"/"之前的所有字符串

var5 =${string:7}      #从第一个字符串开始找到第8个字符串,然后输出剩下所有的字符串
var6 =${string:7:12}   #从第一个字符串开始找到第8个字符串,从这个字符串开始输出12个字符
var7 =${string:0-9}    #从最后一个字符串开始计算起直到算到第9个字符,然后输出后面的所有字符
var8 =${string:0-14:4} #从最后一个字符串开始计算起直到算到第14个字符,然后输出后面接着的4个字符

运行结果:
http://www.sohu.com/find
http:
/www.sohu.com/find/something
something

www.sohu.com/find/something
www.sohu.com
something
find/

上面的 * 可以换成别的通配规则,如:/[fw]* 【假设使用%符号从结尾开始查找】
解释:再找到 / 之后会查找后面是否出现f或者w,只需要符合其中一个即可,这里会首先找到f,所以就会删除 /find/something,后面的*符号一定需要,否则就会匹配不到任何的数据,因为从结尾查找就必须要从结尾开始整个的都匹配,不可以直接 ${string%find} 虽然此字符串中间有find子字符串,但是%是需要从结尾开始匹配的,它从结尾无法匹配到find字符串,但是你可以这样写 ${string%find*} 这样匹配到的数据就是find/something

shell字符查的替换

  • ${str/I/You} :将str中第一次出现的I改成You
  • ${str//I/You} :将str中所有出现的I改成You
  • ${str/#I/You} :字符串如果以I开头,则将开头的I改成You
  • ${str/%I/You} :字符串如果以I结尾,则将结尾的I改成You

shell字符串的长度的计算

  • echo ${#var}
  • echo `expr length ${var}`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值