Shell基础知识(四)

字符串详解
字符串可以由 单引号/双引号/无引号 包围。如下所示
>>
str1=hello
str2="hello"
str3='hello'
<<
三种形式的区别:
1)由单引号包围
字符原样输出,不对其中的变量进行解析。并且在字符串中不能出现单引号,即使加了转义字符也不行。
2)由双引号包围
如果字符串中存在变量,那么会对变量进行解析。可以存在双引号,只要由转义字符就行。
3)没有符号包围
如果有变量同样也会被解析,但是不能出现空格,否则,会认为空格后面的内容是其他变量或者字符串解析。
 
获取字符串长度
#!/bin/bash
str="hello world!"
echo ${#str}
字符串拼接
shell中字符串拼接不需要任何操作符,很简单粗暴。
#!/bin/bash
nick_name="mocun"
name="yinzm"

str1=$nick_name$name
str2="$nick_name $name"
str3=$nick_name" : "$name
str4="$nick_name : $name"
str5="${nick_name} : ${name}"

echo $str1
echo $str2
echo $str3
echo $str4
echo $str5
字符串截取
可以从左边开始,也可以从右边开始截取。
#!/bin/bash
str="hello,world!"
echo ${str:6:5}
echo ${str:6}
echo ${str:0-6:5}
echo ${str:0-6}
输出:

world

world!

world

world!

 

shell还支持指定字串进行截取

 

#!/bin/bash
url="https://www.google.com"

echo ${url#*://}
echo ${url#*//}

其中#用来指定字符,*为通配符的一种,表示任意长度的字符串。*chars的意思就是忽略左边的所有字符,直到chars,并且不包含chars。指定字串进行截取不能限定截取长度。

 

如果在字符串中有多处出现指定的字符,那么只会在第一次遇到指定字符的时候开始截取。如果想改成最后一次遇到指定字符开始截取,使用##*的方式。如下:

 

#!/bin/bash
url="https://www.google.com"

echo ${url#*w}
echo ${url##*w}

输出:

ww.google.com 

.google.com

 

类似的,也可以截取指定字符左边的字串。具体语法可以看示例:

 

#!/bin/bash
url="https://www.google.com"

echo ${url%.*}
echo ${url%%.*}

输出:

https://www.google

https://www





猜你喜欢

转载自www.cnblogs.com/yinzm/p/10325061.html