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}.c
在 variable 变量后面拼接上 .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}`