shell入门学习笔记-06-字符串

版权声明:本文为博主hanchao5272原创文章,转载请注明来源,并留下原文链接地址,谢谢! https://blog.csdn.net/hanchao5272/article/details/86430421

系列目录与参考文献传送门: shell入门学习笔记-序章

字符串详解

三种字符串赋值方式

admindeMacBook-Pro:myshell admin$ n=521
admindeMacBook-Pro:myshell admin$ str1=hello$n str="the special charactor \'$\' at line $n"
admindeMacBook-Pro:myshell admin$ str1=hello$n str2="the special charactor \'$\' at line $n"
admindeMacBook-Pro:myshell admin$ str3='no special charactors $n'
admindeMacBook-Pro:myshell admin$ echo ${str1}
hello521
admindeMacBook-Pro:myshell admin$ echo ${str2}
the special charactor \'$\' at line 521
admindeMacBook-Pro:myshell admin$ echo ${str3}
no special charactors $n
admindeMacBook-Pro:myshell admin$ str3='\"hh\"'
admindeMacBook-Pro:myshell admin$ echo $str3
\"hh\"
admindeMacBook-Pro:myshell admin$ str3='\'ss\''
>
  • 不使用引号的字符串str1=hello$n
    • 其中出现的变量会被解析,如$n
    • 字符串不能包含空格,否则后续字符串将作为其他变量或者字符串解析
  • 使用双引号的字符串str="the special charactor \'$\' at line $n"
    • 变量会被解析
    • 字符串内可以使用单引号
  • 使用单引号的字符串str3=‘no special charactors’
    • 字符串不被解析
    • 字符串内不可以使用单引号

获取字符串长度

admindeMacBook-Pro:myshell admin$ echo ${str3}
no special charactors $n
admindeMacBook-Pro:myshell admin$ echo ${#str3}
24

字符串拼接

admindeMacBook-Pro:myshell admin$ name="hanchao"
admindeMacBook-Pro:myshell admin$ age=99
admindeMacBook-Pro:myshell admin$ str1=$name$age
admindeMacBook-Pro:myshell admin$ str2=$name" "$age
admindeMacBook-Pro:myshell admin$ str3="$name $age"
admindeMacBook-Pro:myshell admin$ str4="name:$name,age:${age}"
admindeMacBook-Pro:myshell admin$ echo $str1
hanchao99
admindeMacBook-Pro:myshell admin$ echo $str2
hanchao 99
admindeMacBook-Pro:myshell admin$ echo $str3
hanchao 99
admindeMacBook-Pro:myshell admin$ echo $str4
name:hanchao,age:99
  • shell字符串拼接,直接将字符串紧挨放在一起即可。
  • 一定注意空格会分割字符串
  • 建议所有字符串都通过双引号包起来

字符串指定长度截取

admindeMacBook-Pro:myshell admin$ str=0123456789
admindeMacBook-Pro:myshell admin$ echo ${str: 3: 4} #从左边开始,则最左边元素的索引为0
3456
admindeMacBook-Pro:myshell admin$ echo ${str: 3} #如果没有截取长度参数,则默认截取至末尾
3456789
admindeMacBook-Pro:myshell admin$ str=987654321
admindeMacBook-Pro:myshell admin$ echo ${str: 0-3: 4}
321
admindeMacBook-Pro:myshell admin$ echo ${str: 0-3: 2} #从右边开始,则最右边元素的索引为1
32
admindeMacBook-Pro:myshell admin$ echo ${str: 0-3}
321
  • 正向字符串截取格式:${string: begin: length}
  • 反向字符串截取格式:${string: 0-begin: length}
  • 从左边开始,则最左边元素的所有为0
  • 从右边开始,则最右边元素的所有为1
  • 如果没有截取length参数,则默认截取至末尾

字符串截取子字符串

admindeMacBook-Pro:myshell admin$ url="http://www.abc.com/1.html"
admindeMacBook-Pro:myshell admin$ echo "${url#http://}"
www.abc.com/1.html
admindeMacBook-Pro:myshell admin$ echo "${url#*:}"
//www.abc.com/1.html
admindeMacBook-Pro:myshell admin$ echo "${url#*/}"
/www.abc.com/1.html
admindeMacBook-Pro:myshell admin$ echo "${url##*/}"
1.html

admindeMacBook-Pro:myshell admin$ echo "${url%1.html}"
http://www.abc.com/
admindeMacBook-Pro:myshell admin$ echo "${url%/*}"
http://www.abc.com
admindeMacBook-Pro:myshell admin$ echo "${url%%/*}"
http:
  • 正向子字符串截取:${string#*chars}
  • 反向子字符串截取:${string#chars*}
  • 如果不带*则表示是全子字符串截取,如果带*,则*表示任意长度的字符串。
  • 单个#和单个%只截取至第一个匹配的字符串。
  • 两个#和两个%截取至最后一个匹配的字符串。
格式 说明
${string: start :length} 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。
${string: start} 从 string 字符串的左边第 start 个字符开始截取,直到最后。
${string: 0-start :length} 从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。
${string: 0-start} 从 string 字符串的右边第 start 个字符开始截取,直到最后。
${string#*chars} 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${string##*chars} 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${string%*chars} 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。
${string%%*chars} 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。

猜你喜欢

转载自blog.csdn.net/hanchao5272/article/details/86430421
今日推荐