1、 变量内容的删除与替换
#代表由前面开始删除,所以这里便由开始的/删起,*来代替0到无穷多个任意字符
%由后面向前删除变量内容
例如:echo ${path%:*bin}删除最有一个目录,即从:到bin为止的字符串并且是最短的
echo ${path/sbin/SBIN}:两个斜线中间的是旧字符,后面的是新字符
变量设置方式 |
说明 |
${变量#关键字} |
若变量内容从头开始的数据符合“关键字”,则将符合的最短数据删除 |
${变量##关键字} |
若变量内容从头开始的数据符合“关键字”,则将符合的最短数据删除 |
${变量%关键字} |
若变量内容从尾向前的数据符合“关键字”,则将符合的最短数据删除 |
${变量%%关键字} |
若变量内容从尾向前的数据符合“关键字”,则将符合的最长数据删除 |
${变量/旧字符串/新字符串} |
若变量内容符合“旧字符串”,则第一个旧字符串会被新字符串替换 |
${变量//旧字符串/新字符串} |
若变量内容符合“旧字符串”,则全部的旧字符串会被新字符串替换 |
2、变量的测试与内容替换
变量设置方式 |
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=expr |
str不变 |
str不变 |
Var=${str:=expr} |
Str=expr |
Str=expr |
str不变 |
Var=${str?expr} |
expr输出至stderr |
Var= |
Var=str |
Var=${str:?expr} |
expr输出至stderr |
expr输出至stderr |
Var=str |