${string%分隔符*}与${string#*分隔符}区分

${string%.*}和${string#*.}这两个东西我一直记混淆的。今天在linux技术qq群上问一下人后,获得完美的答复。谢谢这位宁波的高手。如下就是他给的帮助:linux

 

 

提炼下记忆方式:
${变量名#(##)*分隔符}剔除首个(或最末个即最右端)分隔符左侧字串
${变量名%(%%)分隔符*}剔除首个(或最末个即最左端)分隔符右侧字串ide

 

假設我們定義了一個變量為: file=/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 記憶的方法為: # 是去掉左邊(在鑑盤上 # 在 $ 之左邊) % 是去掉右邊(在鑑盤上 % 在 $ 之右邊) 單一符號是最小匹配﹔兩個符號是最大匹配。
相关文章
相关标签/搜索