${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 記憶的方法為: # 是去掉左邊(在鑑盤上 # 在 $ 之左邊) % 是去掉右邊(在鑑盤上 % 在 $ 之右邊) 單一符號是最小匹配﹔兩個符號是最大匹配。
相關文章
相關標籤/搜索