(1)基本用法
1) 由单引号' '包围的字符串:
- 任何字符都会原样输出,在其中使用变量是无效的。
- 字符串中不能出现单引号,即使对单引号进行转义也不行。
2) 由双引号" "包围的字符串:
- 如果其中包含了某个变量,那么该变量会被解析(得到该变量的值),而不是原样输出。
- 字符串中可以出现双引号,只要它被转义了就行。
3) 不被引号包围的字符串
- 不被引号包围的字符串中出现变量时也会被解析,这一点和双引号
" "包围的字符串一样。 - 字符串中不能出现空格,否则空格后边的字符串会作为其他变量或者命令解析。
- 不被引号包围的字符串中出现变量时也会被解析,这一点和双引号
#!/bin/bash
#单引号有问题
n=56
a1=num=$n
a2='num=$n'
a3="num=$n"
echo $a1
echo $a2
echo $a3
#无引号有问题
#b1=china is nice
b2='china is nice'
b3="china is nice"
echo $b1
echo $b2
echo $b3
#获取字符串长度
c1="super star is reba"
echo ${#c1}
结果:
(2)字符串截取
#!/bin/bash
#字符串拼接 两个str放在一起
a1="迪丽热巴"
a2="欧阳图图"
b1=$a1$a2
b2='$a1 and $a2'
b3="$a1 and $a2"
b4=a1':'a2
echo $b1
echo $b2
echo $b3
echo ----------------------
#通过位置截取
#与python的切片类似
# ${截取的字符串:起始位置从0开始:截取的长度}
#左边往后: ${string:start:length}
#右边往后: ${string:0-start:length}
c1="the star in my heart is reba"
c2="迪丽热巴"
echo ${c2:2:2}
echo ${c1:3:10}
echo ${c2:0-2:4}
echo ${c1:0-3:10}
#并没有正在截取到原字符串
echo $c2
echo $c1
echo ----------------------
#通过指定字符截取
# ${截取的字符串#*指定字符}
# #:表示可以截取指定字符右边所有的字符
# *:通配符,表示任意长度的字符串
echo ${c1#star}
echo ${c1#*star}
echo ${c2#热}
echo ${c2#*热}
echo ----------------------
url="https://www.cnblogs.com/oytt/p/13398266.html"
url2="rr=aa==tt===aa++99"
echo ${url#*/} #遇到第一个匹配结束
echo ${url##*/} #遇到最后一个匹配结束
echo ${url2#*aa}
echo ${url2##*aa}
echo ----------------------
#通过%截取左边字符
# ${string%chars*}
echo ${url%/*} #遇到第一个匹配结束
echo ${url%%/*} #遇到最后一个匹配结束
echo ${url2%aa*}


来自shell的随笔均参考自 http://c.biancheng.net/view/1114.html
本文深入讲解Shell脚本中字符串的基本用法,包括不同引号包围的字符串特性、变量解析、字符串长度获取、拼接与截取技巧。通过具体示例,帮助读者掌握Shell下字符串处理的实用方法。
shell字符串深入解析&spm=1001.2101.3001.5002&articleId=133022374&d=1&t=3&u=23e2aac6429641688fe2a5a34a10b0c9)
1152

被折叠的 条评论
为什么被折叠?



