Shell中字符处理
1, 有关变量声明的字符串赋值。
- ${VALUE:-WORD}:当变量未定义或者值为空时,返回值为WORD的内容,否则返回变量的值。
- ${VALUE-WORD}:当变量未定义时,返回值为WORD的内容,否则返回变量的值。
- ${VALUE:=WORD}:当变量未定义或者值为空时,返回WORD的值的同时并将WORD赋值给VALUE,否则返回变量的值。
- ${VALUE=WORD}:当变量未定义时,返回WORD的值的同时并将WORD赋值给VALUE,否则返回变量的值。
- ${VALUE:+WORD}:当变量已赋值,并且非空时,其值才用WORD替换,否则不进行任何替换。
- ${VALUE+WORD}:当变量声明时,其值才用WORD替换,否则不进行任何替换。
- ${VALUE:?MESSAGE}:当变量已声明并且不为空时,正常替换。否则将消息MESSAGE送到标准错误输出(若此替换出现在SHELL程序中,那么该程序将终止运行)。
- ${VALUE?MESSAGE}:当变量声明时,正常替换。否则将消息MESSAGE送到标准错误输出(若此替换出现在SHELL程序中,那么该程序将终止运行)。
- ${!varprefxi*},${!varprefix@}: 匹配之前所有以varprefix开头进行声名的变量名称。
2, 有关字符串处理的特殊写法
1. ${#String}: 获取$String的长度。
2, ${string:position}: 在$String中,从位置position开始提取子字符串。
3, ${string:position:length}:在$String中,从位置position开始提取长度为length的子字符串。
4,${string#substring}: 在$string中,从左到右最小匹配substring。并删除匹配到的字符。
5,${string##substring}: 在$string中,从左到右最大匹配substring。并删除匹配到的字符。
6,${string%substring}: 在$string中,从右到左最小匹配substring。并删除匹配到的字符。
7,${string%%substring}: 在$string中,从右到左,最大匹配substring,并删除匹配到的字符。
8,${string/substring/replacement}: 在$string使用replacement代替第一个匹配到的substring.
9,${string//substring/replacement}: 在$string使用replacement代替所有匹配substring的字符。
10,${string/#substring/replacement}: 如果$string的前缀匹配substring,那么就用replacement代替匹配到的substring。
11,${string/%substring/replacement}; 如果$string的后缀匹配substring,那么就用replacement代替匹配到的substring。
3, 有关expr表达式
1,expr match "${string}" 'substring': 在$string从头开始匹配substring的长度。
2,expr "$string" : '$substring' : 在$string 中,从头开始匹配substring的长度。
3,expr index "$string" 'substring':在$string中,从头开始匹配substring的第一个字符出现的位置。
4,expr substr $string position length: 在$string中,从位置position 开始抽取长度为length的子字符串。
5,expr match "$string" '\(substring\)': 在$string中,从左到右提取符合正则表达式substring的子字符串。
6,expr "$string" : '\(substring\)' : 如上。从左到右从$string中提取符合正则表达式的substring的子字符串。
7,expr match "$string" '.*\(substring\)': 从结尾开始,在$string中提取符合 正则表达式substring的子字符串。
8,expr "$string" : '.*\(substring\)': 从结尾开始,在$string 中提取符合正则表达式substring的子字符串。