一、語法
在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