[root@rhel6-server ~]# echo ${MAIL} #输出MAIL环境变量
/var/spool/mail/root
[root@rhel6-server ~]# echo ${MAIL# /*/ } #从前面开始,匹配以/开头且以/结束的最短字符串,找到后删除
spool/mail/root
[root@rhel6-server ~]# echo ${MAIL## /*/ } #从前面开始,匹配以/开头且以/结束的最长字符串,找到后删除
root
[root@rhel6-server ~]# echo ${MAIL%/*/} #从后面开始,匹配以/开头且以/结束的最短字符串,找到后删除
/var/spool/mail/root
[root@rhel6-server ~]# echo ${MAIL%/*} #从后面开始,匹配以任意字符开头且以/结束的最短字符串,找到后删除
/var/spool/mail
[root@rhel6-server ~]# echo ${MAIL%%/*} #从后面开始,匹配以任意字符开头且以/结束的最长字符串,找到后删除
[root@rhel6-server ~]# echo ${MAIL%%l*} #从后面开始,匹配以任意字符开头且以l结束的最长字符串,找到后删除
/var/spoo
[root@rhel6-server ~]# echo ${MAIL/l/L} #从前面开始,匹配第一个l,找到后替换为L
/var/spooL/mail/root
[root@rhel6-server ~]# echo ${MAIL//l/L} #从前面开始,匹配所有l,找到后替换为L
/var/spooL/maiL/root
[root@rhel6-server ~]# echo ${MAIL/oo/OO} #从前面开始,匹配第一个oo,找到后替换为OO
/var/spOOl/mail/root
[root@rhel6-server ~]# echo ${MAIL//oo/OO} #从前面开始,匹配所有oo,找到后替换为OO
/var/spOOl/mail/rOOt
/var/spool/mail/root
[root@rhel6-server ~]# echo ${MAIL# /*/ } #从前面开始,匹配以/开头且以/结束的最短字符串,找到后删除
spool/mail/root
[root@rhel6-server ~]# echo ${MAIL## /*/ } #从前面开始,匹配以/开头且以/结束的最长字符串,找到后删除
root
[root@rhel6-server ~]# echo ${MAIL%/*/} #从后面开始,匹配以/开头且以/结束的最短字符串,找到后删除
/var/spool/mail/root
[root@rhel6-server ~]# echo ${MAIL%/*} #从后面开始,匹配以任意字符开头且以/结束的最短字符串,找到后删除
/var/spool/mail
[root@rhel6-server ~]# echo ${MAIL%%/*} #从后面开始,匹配以任意字符开头且以/结束的最长字符串,找到后删除
[root@rhel6-server ~]# echo ${MAIL%%l*} #从后面开始,匹配以任意字符开头且以l结束的最长字符串,找到后删除
/var/spoo
[root@rhel6-server ~]# echo ${MAIL/l/L} #从前面开始,匹配第一个l,找到后替换为L
/var/spooL/mail/root
[root@rhel6-server ~]# echo ${MAIL//l/L} #从前面开始,匹配所有l,找到后替换为L
/var/spooL/maiL/root
[root@rhel6-server ~]# echo ${MAIL/oo/OO} #从前面开始,匹配第一个oo,找到后替换为OO
/var/spOOl/mail/root
[root@rhel6-server ~]# echo ${MAIL//oo/OO} #从前面开始,匹配所有oo,找到后替换为OO
/var/spOOl/mail/rOOt
总结:
# 从前面开始删,匹配最短匹配的字符串
## 从前面开始删,匹配最长匹配的字符串
% 从后面开始删,匹配最短匹配的字符串
%% 从后面开始删,匹配最长匹配的字符串
/ 替换第一个匹配的字符串
// 替换所有匹配的字符串
REF:
變數內容的刪除、取代與替換
http://linux.vbird.org/linux_basic/0320bash.php#variable_other