字符串
- 没有引号
不能有空格,否则空格后边的字符串会作为其他变量或者命令解析
和双引号一样 - 单引号
任何字符都会原样输出,在其中使用变量是无效的
不能使用单引号,即使对单引号进行转义也不行 - 双引号
变量会被解析(得到该变量的值)
可出现转义的双引号
${#variable} : 获取字符串长度
a=123
b='hello ${a}'
c="hello ${a}"
d=$a
echo $b,$c,$d
echo ${#b}
hello ${a},hello 123,123
10
字符拼接
a="hello"
b="world"
c="$a $b"
echo $c
hello world
字符串从指定位置截取
不管从哪边开始计数,截取方向都是从左到右。
- 从左往右计数,起始数是0
${variable:start[:length]} - 从右往左计数,起始数是1
${variable:0-start[:length]}*
a=1234567
echo ${a:2}
echo ${a:2:2}
echo ${a:0-5}
echo ${a:0-5:2}
34567
34
34567
34
字符串从指定字符截取
- 截取右边的字符,从左往右查找
- 从第一次出现截取
${variable#*char} - 从最后一次出现截取
${variable#*char}
- 从第一次出现截取
- 截取左边的字符, 从右往左查找
- 从第一次出现截取
${variable%char*} - 从最后一次出现截取
${variable%%char*}
- 从第一次出现截取
a=1234321
echo ${a#*2}
echo ${a##*2}
echo ${a%2*}
echo ${a%%2*}
34321
1
12343
1