天天看點

Linux shell ${}簡單用法

為了完整起見,我這裡再用一些例子加以說明 ${ } 的一些特異功能:

假設我們定義了一個變量為:

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

記憶的方法為:

# 是去掉左邊(在鑒盤上 # 在 $ 之左邊)

% 是去掉右邊(在鑒盤上 % 在 $ 之右邊)

單一符号是最小比對﹔兩個符号是最大比對。

${file:0:5}:提取最左邊的 5 個位元組:/dir1

${file:5:5}:提取第 5 個位元組右邊的連續 5 個位元組:/dir2

我們也可以對變量值裡的字元串作替換:

${file/dir/path}:将第一個 dir 提換為 path:/path1/dir2/dir3/my.file.txt

${file//dir/path}:将全部 dir 提換為 path:/path1/path2/path3/my

繼續閱讀