10、Shell字符串

字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。

单引号

str='this is a string'

单引号字符串的限制:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

双引号

your_name='qinjx'
str="Hello, I know your are \"$your_name\"! \n"

双引号的优点:

  • 双引号里可以有变量
  • 双引号里可以出现转义字符

拼接字符串

your_name="qinjx"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1

获取字符串长度

string="abcd"
echo ${#string} #输出 4

提取子字符串

string="alibaba is a great company"
echo ${string:1:4} #输出liba

删除子串

示例

[root@Centos8 ~]# DEL=abcABC123ABCabc
[root@Centos8 ~]# echo $DEL
abcABC123ABCabc

方式一:${string#substring},从开头, 删除最短匹配的子串

#删除开头最短匹配a*C子串
[root@centos8 ~]# echo ${DEL#a*C}
123ABCabc

方式二:${string##substring},从开头, 删除最长匹配的子串

#删除开头最长匹配a*C子串
[root@centos8 ~]# echo ${DEL##a*C}
abc

方式三:${string%substring},从结尾删除最短匹配的子串

#删除开头最短匹配a*c子串
[root@centos8 ~]# echo ${DEL%a*c}
abcABC123ABC

方式四:${string%%substring},从结尾删除最长匹配的子串

#删除开头长匹配a*c子串
[root@centos8 ~]# echo ${DEL%%a*c}
                        <--#结果为空,全部匹配删除

替换子串

方法一:${string/substring/replacement},从开头替换第一个匹配子串

[root@centos8 ~]# echo ${DEL/abc/mmm}
mmmABC123ABCabc

(2)方法二:${string/%substring/replacement},从结尾替换第一个匹配子串

[root@centos8 ~]# echo ${DEL/%abc/mmm}
abcABC123ABCmmm

(3)方法三:${string//substring/replacement}     使用$replacement, 代替所有匹配的$substring

[root@centos8 ~]# echo ${DEL//abc/mmm}
mmmABC123ABCmm

总结

字符串操作列表(长度,读取,替换,#是从开头开始,%是从结尾开始匹配)

表达式 含义
${#string} $string的长度
${string:position} 在$string中, 从位置$position开始提取子串(从0开始,类似cut -c)
${string:position:length} 在$string中, 从位置$position开始提取长度为$length的子串
${string#substring} 从变量$string的开头, 删除最短匹配$substring的子串
${string##substring} 从变量$string的开头, 删除最长匹配$substring的子串
${string%substring} 从变量$string的结尾开始, 删除最短匹配$substring的子串
${string%%substring} 从变量$string的结尾开始, 删除最长匹配$substring的子串
${string/substring/replacement} 使用$replacement, 来代替第一个匹配的$substring
${string//substring/replacement} 使用$replacement, 代替所有匹配的$substring
posted @ 2020-08-18 08:04  博小园  阅读(186)  评论(0编辑  收藏  举报
回到顶部