字符串¶
参考:
学习shell字符串的语法以及用法
语法¶
可使用单引号或双引号表示字符串,两种表示方式之间有差异
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
- 单引号字符串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用
- 双引号里可以有变量
- 双引号里可以出现转义字符
获取字符串长度¶
使用符号${#}获取字符串长度,操作如下:
$ cat test.sh
#!/bin/bash
VAR="asdfadfa"
echo ${#VAR}
结果如下:
$ bash test.sh
8
判断字符串是否以某些字符开头¶
[[ ${STR} == h* ]]
使用双中括号和等于号表示字符串STR是否以h开头。注意
h*不需要使用引号括起来,使用引号括起来是直接做相等比较- 比较语句使用双中括号括起来,而不是使用单中括号
也可以使用正则比较方式,将==改为=~即可
[[ "$str" =~ ^he.* ]]
he*:不要使用he*,这里的*号表示e字符0到多个,即h,以及heeee都可测试通过he.*:表示字符串是否包含he^he.*:表示字符串是否以he开头
判断字符串是否为空¶
使用双中括号和参数-z或-n
$ cat test.sh
#!/bin/bash
if [[ -z ${1} ]]
then
echo "第一个参数为空字符串"
fi
if [[ -n ${2} ]]
then
echo "第二个参数不是空字符串"
fi
执行结果如下:
$ bash test.sh "" "adfa"
第一个参数为空字符串
第二个参数不是空字符串
删除字符串¶
${var#*//}
#是运算符,var是变量,*//表示删除从左往后第一个//及之前字符
${var##*//}
##是运算符,表示删除从左往后最后一个//及之前字符
${var%/*}
%是运算符,表示删除从右往左第一个/及之前字符
${var%%/*}
%%是运算符,表示删除从右往左最后一个/及之前字符
提取字符串¶
语法如下:
${string:begin[:num]}
string是字符串变量,:begin是起始下标(以0开始),:num是字符个数,如果为空,表示其后所有字符
$ cat test.sh
#!/bin/bash
var="/home/zj/hahahaha"
# 截取/zj/hahahaha
echo "${var:5}"
# 截取/home/zj
echo "${var:0:9}"
# 截取zj
echo "${var:6:2}"
执行结果:
$ bash test.sh
/zj/hahahaha
/home/zj/
zj