一、语法
在shell中可以通过#、%对字符串进行掐头去尾操作,使用方法如下:
- # 表示掐头
- % 表示去尾
- 单个#或%表示最小匹配
- 双个$或%表示最大匹配
二、例子1
假设我们定义一个变量为:
filename=/dir1/dir2/dir3/my.file.txt
可以通过${ }分别替换得到不同的值:
- ${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
- ${file##*/}:删掉最后一个 / 及其左边的字符串:my.file.txt
- ${file#*.}:删掉第一个 . 及其左边的字符串:file.txt
- ${file##*.}:删掉最后一个 . 及其左边的字符串:txt
- ${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
- ${file%%/*}:删掉第一个 / 及其右边的字符串:(空值)
- ${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
- ${file%%.*}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
三、例子2
用户名/密码@IP:str=user_name/"password"@192.168.100.100 8080
- str2=${str##*/}
- ip=${str2##*@}
- username=${str%%/*}
- password=${str2%%@*}
四、其他
1.截取子字符集
echo ${filename:0:5}:提取最左边的5个字符,/dir1
echo ${filename:5:5}:提取第5个字符开始的连续5个字符,/dir2
2.替换字符
echo ${filename/dir/path}:将第一个dir替换成path,/path1/dir2/dir3/my.file.txt
echo ${filename//dir/path}:将全部dir替换成path,/path1/path2/path3/my.file.txt
3.长度计算
echo ${#filename}:返回变量值的长度
END 2018-08-20 16:37:52