shell - 字符串
字符串运算符
下表给出了常用的字符串运算符,一般用于if判断语句中。假设a="abc"
,b="def"
符号
说明
举例
=
相等判断符
[[ $a = $b ]]
返回false
!=
不等判断符
[[ $a = $b ]]
返回false
-n
检测字符串长度是否不为0
[[ -n $a ]]
返回true
-z
检测字符串长度是否为0
[[ -z $a ]]
返回false
字符串to数组
#!/bin/bash
str="Mon Tue Wed"
IFS=' ' read -a array <<< $str
size=${#array[@]}
for ((i=0; i<size; i++)); do
echo ${array[$i]}
done
输出结果:
Mon
Tue
Wed
注意,IFS中的分隔符可以有多个。比如str="Mon Tue,Wed"
,我们如果想拆分出Mon、Tue、Wed三个单词,只需要把IFS设置为IFS=' ,'
即可。
字符串截取
"${var#*str}" # 删除左边字符串,从左边第一个
"${var##*str}" # 删除左边字符串,从左边最后一个
"${var%str*}" # 删除右边字符串,从右边第一个
"${var%%str*}" # 删除右边字符串,从右边最后一个
见下面链接的文章后面的读书笔记
http://www.runoob.com/linux/linux-shell-variable.html
字符串替换
"${var/search/replace}" # 替换第一个,如果有'/'请使用转义字符'\'
"${var//search/replace}" # 全部替换
大小写转换
大写to小写
比如 str="Hi, ALL"
,想转换成 hi, all
bash
echo "${str,,}"
awk
echo "$str" | awk '{print tolower($0)}'
字符串包含关系
if [[ ${str} =~ "abc" ]]; then
echo "${str} contains abc"
fi
Last updated
Was this helpful?