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?