内容一:设置字符串默认值
1.1 当要替换的变量未定义或为空时则给予其 1 个默认值
# value=
# newvalue=${value:-eternalcenter}
# echo $newvalue
eternalcenter
# value=mingyuzhu
# newvalue=${value:-eternalcenter}
# echo $newvalue
mingyuzhu
或者:
# value=
# newvalue=${value:=eternalcenter}
# echo $newvalue
eternalcenter
# value=mingyuzhu
# newvalue=${value:=eternalcenter}
# echo $newvalue
mingyuzhu
(补充:这里以当变量 value 存在且为空时则变量 newvalue 的值为 eternalcenter 为例)
1.2 当要替换的变量已定义且不为空时则给予其 1 个默认值
# value=
# newvalue=${value:+eternalcenter}
# echo $newvalue
# value=mingyuzhu
# newvalue=${value:+eternalcenter}
# echo $newvalue
eternalcenter
(补充:这里以当变量 value 存在且不为空时则变量 newvalue 的值为 eternalcenter 为例)
内容二:截取变量某一部分内容 (以字符在字符串的位置作为参照)
2.1 截取从第某个位置字符开始的所有内容
2.1.1 截取字符串中从左数第某个字符开始到左边的所有内容 (包含此字符本身)
# str=eternalcenter.com
# echo ${str::2}
et
或者:
# str=eternalcenter.com
# echo ${str:0:2}
et
或者:
# str=eternalcenter.com
# echo ${str:offset:2}
et
(补充:这里以截取字符串中从左数第 2 个字符和左边的所有内容为例)
2.1.2 截取字符串中从右数第某个字符开始到左边的所有内容 (不包含此字符本身)
# str=eternalcenter.com
echo ${str::0-2}
eternalcenter.c
(补充:这里以截取字符串中从右数第 2 个字符开始左边的所有内容为例)
2.1.3 截取字符串中从右数第某个字符开始到右边的所有内容 (包含此字符本身)
# str=eternalcenter.com
# echo ${str:0-2}
om
(补充: 截取字符串中从除右数第 2 个字符开始到右边的所有内容)
2.2 截取从第某个位置字符开始几个位置的字符的内容
2.2.1 截取字符串中从左数第某个字符开始几个字符的内容 (不包含此字符本身)
# str=eternalcenter.com
# echo ${str:5:4}
alce
(补充:这里以截取字符串中从左数第 5 个字符开始 4 个字符的内容为例)
(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)
2.2.2 截取字符串中从右数第某个字符开始几个字符的内容 (包含此字符本身)
# str=eternalcenter.com
# echo ${str:0-5:4}
r.co
(补充:这里以截取字符串中从右数第 5 个字符开始右边 4 个字符的内容为例)
(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)
2.3 截取从第某个位置字符到第某个位置字符的内容
2.3.1 截取字符串中从左数第某个字符到从右数第某个字符中的所有内容 (不包含这些字符本身)
# str=eternalcenter.com
# echo ${str:1:-4}
ternalcenter
(补充:这里以截取字符串中从左数第 1 个字符到右数第 4 个字符中的所有内容为例)
(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)
2.3.2 截取字符串中从右数第某个字符到从右数第某个字符中的所有内容 (不包含这些字符本身)
# str=eternalcenter.com
# echo ${str:0-5:0-1}
r.co
或者:
# str=eternalcenter.com
# echo ${str:0-5:-1}
r.co
(补充:这里以截取字符串中从右数第 1 个字符到从右数第 4 个字符中的所有内容为例)
(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)
2.4 截取字符串中除从左数第某个字符外的所有内容
# str=eternalcenter.com
# echo ${str:2}
ernalcenter.com
(补充:截取字符串中从除左数第 2 个字符开始到右边的所有内容)
内容三:截取变量某一部分内容 (以字符作为参照)
3.1 截取变量前一部分内容 (去尾)
3.1.1 截取变量右数第 1 个某个字符到左边的所有内容 (去尾) (不包含此字符本身)
# value=ming:yu:zhu
# newvalue=${value%:*}
# echo $newvalue
ming:yu
(补充:这里以截取变量 value 右数第 1 个冒号 “:” 左边的所有值并赋予给变量 newvalue 为例)
3.1.2 截取变量右数最后某个字符到左边的所有内容 (最大限度去尾) (不包含此字符本身)
# value=ming:yu:zhu
# newvalue=${value%%:*}
# echo $newvalue
ming
(补充:这里以截取变量 value 右数最后 1 个冒号 “:” 左边的所有并赋予给变量 newvalue 内容为例)
3.1.3 截取变量右数最后某几个字符到左边的所有内容 (使用变量) (去尾) (不包含此字符本身)
# value=mingyuzhu
# novalue=zhu
# newvalue=${value%%$novalue}
# echo $newvalue
mingyu
(补充:这里以截取变量 value 右数最后 1 个 zhu 左边的所有内容并赋予给变量 newvalue 为例)
3.2 截取变量后一部分内容 (掐头)
3.1 截取变量左数第 1 个某个字符到右边的所有内容 (掐头) (不包含此字符本身)
# value=ming:yu:zhu
# newvalue=${value#*:}
# echo $newvalue
yu:zhu
(补充:这里以截取变量 value 左数第 1 个冒号 “:” 右边的所有内容并赋予给变量 newvalue 为例)
3.2 截取变量左数最后某个字符到右边的所有内容 (最大限度掐头) (不包含此字符本身)
# value=ming:yu:zhu
# newvalue=${value##*:}
# echo $newvalue
zhu
(补充:这里以截取变量 value 左数最后 1 个冒号 “:” 右边的所有内容并赋予给变量 newvalue 为例)
3.3 去除变量左数最后某个字符到右边的所有内容 (使用变量) (掐头) (不包含此字符本身)
# value=mingyuzhu
# novalue=ming
# newvalue=${value##$novalue}
# echo $newvalue
yuzhu
(补充:这里以截取变量 value 左数最后 1 个 ming 右边的所有内容并赋予给变量 newvalue 为例)
内容四:当变量已定义且不为空时则将变量中的某部分替换成另一部分
# value=mingyuzhu
# noneedvalue=yu
# needvalue=zhu
# newvalue=${value/$noneedvalue/$needvalue}
# echo $newvalue
mingzhuzhu
(补充:这里以将变量 value 中的 yu 替换成 zhu 并赋予给变量 newvalue 为例)