摘自《鸟哥的Linux私房菜 基础学习版》
${variable#/**kerberos/bin:}
每个参数字符:
variable:要修改的变量;
#:符合取代文字的[最短的]那一个
##:符合取代文字的[最长的]那一个
#或##代表【从变量内容的最前面开始删除】
/:从最前面开始删除时,从最前面的/字符开始删除
*kerberos/bin:*用来取代0到无穷多个任意字符,用来表示一直删除到结尾为kerberos/bin:的部分
例如:
|
从后面向前删除内容:%
例如:
echo ${path%:*bin}
为从最后面开始,删除匹配:*bin表达式的字符串,结果为:
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
同样,%%代表最长的符合字符串,结果为:
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
变量设定方式 | |
${变量#关键词} | 若变量内容从头开始的数据符合【关键词】,则将符合的最短数据删除 |
${变量##关键词} | 若变量内容从头开始的数据符合【关键词】,则将符合的最长数据删除 |
${变量%关键词} | 若变量内容从尾向前的数据符合【关键词】,则将符合的最短数据删除 |
${变量%%关键词} | 若变量内容从尾向前的数据符合【关键词】,则将符合的最长数据删除 |
${变量/旧字符串/新字符串} | 若变量内容符合【旧字符串】,则【第一个旧字符串会被新字符串取代】 |
${变量//旧字符串/新字符串} | 若变量内容符合【旧字符串】,则【全部的旧字符串会被新字符串取代】 |
变量设定方式 | str没有设定 | str为空字符串 | str已设定非为空字符串 |
var=${str-expr} | var=expr | var= | var=$str |
var=${str:-expr} | var=expr | var=expr | var=$str |
var=$(str+expr) | var= | var=expr | var=expr |
var=$(str:+expr) | var= | var= | var=expr |
var=$(str=expr) | str=exp var=expr | str不变 var= | str不变 var=$str |
var=$(str:-expr) | str=expr var=expr | str=expr var=expr | str不变 var=$str |
var=$(str?expr) | expr输出至stderr | var= | var=$str |
var=$(str:?expr) | expr输出至stderr | expr输出至stderr | var=$str |