shell字符串变量的特异功能${}:字符串的替换、截断
假如有shell字符串变量: file= "...."
一、shell变量字符串的替换功能:
1. 首次出现替换:
${file/源模式/目标模式} #在file变量指代的字符串中,首次出现的匹配源模式的字符序列用目标模式替换。
2. 全部替换:
${file//源模式/目标模式} #在file变量指代的字符串中,在对匹配源模式的所有字符序列处分别用目标模式替换。
二、shell变量字符串的截取
1. 左截取
最小匹配截取: ${file#模式} #模式必须和以行首字符为起始子字符串相匹配才能实现截取;否则,字符串原样输出。
最大匹配截取: ${file##模式} #模式必须和以行首字符为起始子字符串相匹配才能实现截取;否则,字符串原样输出。
(note: 这里的最大、最小匹配主要指包含通配符的模式, 如模式中包含 *, ?. and etc)
应用举例:eg:
[wzb@embedded bin]$ file=*ab*de*cd*ab*de
[wzb@embedded bin]$ echo ${file#*a}
b*de*cd*ab*de
[wzb@embedded bin]$ echo ${file##*a}
b*de
[wzb@embedded bin]$ echo ${file##\*a}
b*de*cd*ab*de
[wzb@embedded bin]$ echo file
file
[wzb@embedded bin]$ echo $file
*ab*de*cd*ab*de
[wzb@embedded bin]$ echo ${file:a=f}
*ab*de*cd*ab*de
[wzb@embedded bin]$
2. 右截取
最小匹配截取: ${file%模式} #模式必须和以行尾字符为结束子字符串相匹配才能实现截取;否则,字符串原样输出。
最大匹配截取: ${file%%模式} #模式必须和以行尾字符为结束子字符串相匹配才能实现截取;否则,字符串原样输出。
(note: 这里的最大、最小匹配主要指包含通配符的模式, 如模式中包含 *, ?. and etc)
应用举例:eg:
[wzb@embedded bin]$ echo $file
abcdabcdefg
[wzb@embedded bin]$ echo ${file%fg}
abcdabcde
[wzb@embedded bin]$ echo ${file%ef}
abcdabcdefg
[wzb@embedded bin]$ echo ${file%%efg}
abcdabcd
[wzb@embedded bin]$ echo ${file%%ef}
abcdabcdefg
[wzb@embedded bin]$ echo ${file%%a*g}
[wzb@embedded bin]$ echo ${file%a*g}
abcd
[wzb@embedded bin]$ echo ${file%%a*g}
[wzb@embedded bin]$