shell ${} : 字串處理 擷取
阿新 • • 發佈:2019-02-14
方式1 ${}取字串
記憶方法:(3個字元鍵盤位置 #$%
,#
是從左向右、%
是從右向左)
一個 # % 是匹配第一個,兩個 ## %% 是匹配最後一個
# 定義一個字元 file
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
方式2 :擷取
${varible:n1:n2} :從左邊數擷取變數varible從n1到n2之間的字串。
${varible:0-n1:n2}:從右邊數擷取變數varible從n1到n2之間的字串。
MYVAR="food|forthought.jpg"
echo ${MYVAR:0:3} #foo
echo ${MYVAR:3} #d|forthought.jpg
echo ${MYVAR:0-3:2} #jp
echo ${MYVAR:0-3} #jpg
獲取檔案絕對路徑
$(readlink -f $f)