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

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

 

 

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

 

假�O我��定�x了一���量�椋�
file=/dir1/dir2/dir3/my.file.txt
我��可以用 ${ } 分�e替�Q�@得不同的值:
${file#*/}:拿掉第一�l / 及其左�的字串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最後一�l / 及其左�的字串:my.file.txt
${file#*.}:拿掉第一�� . 及其左�的字串:file.txt
${file##*.}:拿掉最後一�� . 及其左�的字串:txt
${file%/*}:拿掉最後�l / 及其右�的字串:/dir1/dir2/dir3
${file%%/*}:拿掉第一�l / 及其右�的字串:(空值)
${file%.*}:拿掉最後一�� . 及其右�的字串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一�� . 及其右�的字串:/dir1/dir2/dir3/my
���的方法�椋�
# 是去掉左�(在�a�P上 # 在 $ 之左�)
% 是去掉右�(在�a�P上 % 在 $ 之右�)
�我环��是最小匹配�r���符�是最大匹配。
 

 

你可能感兴趣的:(${string%分隔符*}与${string#*分隔符}区分)