shell變數的擷取總結

2022-04-18 14:55:50 字數 945 閱讀 8777

#shell變數的擷取

shell中的${}、##和%%假設定義了乙個變數為:

**如下:

file=/dir1/dir2/dir3/my.file.txt

//變數的刪除可以用$分別替換得到不同的值:

$:刪掉第乙個 / 及其左邊的字串:dir1/dir2/dir3/my.file.txt

$:刪掉最後乙個 /及其左邊的字串:my.file.txt

$:刪掉第乙個 . 及其左邊的字串:file.txt

$:刪掉最後乙個 . 及其左邊的字串:txt

$:刪掉最後乙個 / 及其右邊的字串:/dir1/dir2/dir3

$:刪掉第乙個 / 及其右邊的字串:(空值)

$:刪掉最後乙個 . 及其右邊的字串:/dir1/dir2/dir3/my.file

$:刪掉第乙個 . 及其右邊的字串:/dir1/dir2/dir3/my

記憶的方法為:

# 是 去掉左邊(鍵盤上#在 $ 的左邊)

%是去掉右邊(鍵盤上% 在$ 的右邊)

單一符號是最小匹配;兩個符號是最大匹配

$:提取最左邊的 5 個位元組:/dir1

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

//變數的替換$:將第乙個dir 替換為path:/path1/dir2/dir3/my.file.txt

$:將全部dir 替換為 path:/path1/path2/path3/my.file.txt

$的意思就是從line這個變數的值中,從後面開始以最長匹配刪去%%後面的表示式內容。

看一下man bash可以找到詳細說明,查詢parameter expansion這段會看到:$$

都是從parameter的最後開始刪除word所匹配的內容,%是最短匹配,%%是最長匹配。

shell 中變數的擷取

假設我們定義了乙個變數為 file dir1 dir2 dir3 my.file.txt 可以用 分別替換得到不同的值 刪掉第乙個 及其左邊的字串 dir1 dir2 dir3 my.file.txt 刪掉最後乙個 及其左邊的字串 my.file.txt 刪掉第乙個 及其左邊的字串 file.txt...

shell變數擷取方法大全

假設有變數 var 一 號擷取,刪除左邊字元,保留右邊字元。echo 其中 var 是變數名,號是運算子,表示從左邊開始刪除第乙個 號及左邊的所有字元 即刪除 http 結果是 www.linuxidc.com test.htm 二 號擷取,刪除左邊字元,保留右邊字元。echo 表示從左邊開始刪除最...

Shell 通過 和 擷取變數

使用變數操作符 1 單個 符 截掉左側,非貪婪匹配 該方式是從左開始第一次匹配到字元 然後截掉左邊內容 包括字元 返回餘下右側部分。var dir1 dir2 file.tar.gz echo tar.gz 2 雙 符 截掉左側,貪婪匹配 該方式是從左開始最大化匹配到字元 然後截掉左邊內容 包括字元...