shell脚本中字符串常用操作整理
2017-03-16 18:24
483 查看
shell中常用字符串操作整理
shell脚本中常用字符串操作如下:1. 字符串的比较
2. 字符串的长度
3. 截取字符串
4. 字符串的替换
下面分别讲解这些操作的用法。
1. 字符串的比较
1.1. 等于和不等于user=zabbix # 这是最常用的 if [ "$user" == "zabbix" ] # 也可以这样 if [[ "$user" == "zabbix" ]]
我们把这种一个一个字符比较过去的方式叫做字符匹配,那有的就说了,如果我只想判断字符串是否符合我的一些条件,像是以什么结尾、以什么开头或包含哪些字符,就可以用下面的方法实现:
path=/home/zabbix/etc # 以"/"开头,判断是不是绝对路径 if [[ "$path" == /* ]] # 是否包含字符(串) if [[ "$path" == *za* ]] # 是否以字符(串)结尾 if [[ "$path" == *tc ]]
我们把上面的方式称为模式匹配
等于(==)和(!=)用法相同,不再单独介绍;为了增加程序的可读性,我一般会把”=”当作赋值用,==在比较的时候用,两个在比较的时候没啥差别。
1.2. 判断字符串是否为空
方法如下:
user=zabbix # 最简单的,判断是否非空,和C的用法类似 if [ "$user" ] # 判断是否为空 if [ ! "$user" ] # 用-z也可以判断是否为空 if [ -z "$user" ] # 用-n判断是否不为空 if [ -n "$user" ] #也可以用最笨的方法,1.1节中讲的 if [[ "$user" == "" ]]
细心的读者已经看到,上面所有关于字符串的操作都用”“引起来了,没有“裸奔”,这样做是为了规范和安全,我给大家举一个裸奔不安全的反例。
string="a == b" if [ $string ] then echo "string is not null" else echo "string is null" fi
2. 字符串的长度
我只说最常用的一种:${#string},举例如下:string1=hello length_of_string1=${#string} echo "$length_of_string1" # 结果是5
3. 截取字符串
3.1. 提取子串格式 | 作用 |
---|---|
${string:position} | 在string中从位置position开始提取子串 |
${string:position:length} | 从位置position提取length长度的子串 |
string2=helloworld echo "${string2:0}" # helloworld echo "${string:5}" # world echo "${string2:5:2}" # wo echo "${string2: -3}" # rld
position为负数的时候表示从字符串的末尾提取长度为n的子串;如果将length作为前面获取子串的再一次操作,那么length为正就截取前lenth个字符,如果length为负数,就去掉后面的length个字符。
示例如下:
string3=helloworld echo "${string3:5}" # world echo "${string3:5:2}" # wo 截取world的前两个字符 echo "${string3:5:-2}" # wor 删除world的后两个字符
3.2. 删除子串
格式 | 作用 |
---|---|
${string#substring} | 删除掉左边最小匹配的子串 |
${string##substring} | 删除掉左边最大匹配的子串 |
${string%substring} | 删除掉右边最小匹配的子串 |
${string%%substring} | 删除掉右边最大匹配的子串 |
string4=abcABC123ABCabc echo "${string4#a*C}" # 123ABCabc echo "${string4##a*C}" # abc echo "${string4%b*c}" # abcABC123ABCa echo "${string4%%b*c}" # a
4. 子串替换
格式 | 作用 |
---|---|
${string/substring/replacement} | 使用replacement替换第一个匹配的子串 |
${string//substring/replacement} | 使用replacement替换全部匹配的子串 |
string5=abcABC123ABCabc echo "${string5/abc/xyz}" # xyzABC123ABCabc echo "${string5//abc/xyz}" # xyzABC123ABCxyz
相关文章推荐
- ABAP常用字符串操作收集整理
- shell脚本字符串操作
- 归纳整理Linux下C语言常用的库函数----内存及字符串控制及操作
- Linux下一些常用的Shell脚本整理
- [C++]常用字符串操作整理
- ABAP常用字符串操作收集整理
- abap中常用字符串操作整理
- 归纳整理Linux下C语言常用的库函数----内存及字符串控制及操作
- shell脚本处理字符串常用方法
- Linux下一些常用的Shell脚本整理
- shell脚本字符串相关操作
- shell脚本处理字符串常用方法
- 【转】shell脚本处理字符串的常用方法
- 常用shell脚本操作
- 工作中常用的数据库操作脚本整理
- Shell常用的一些操作集锦(如字符串截取、字符串比较以及For循环等)
- ABAP常用字符串操作收集整理
- ABAP-常用字符串操作收集整理
- shell脚本—— 字符串操作(长度,查找,替换)
- Shell脚本中替换字符串等操作