Shell 通過 和 擷取變數

2021-10-02 08:24:48 字數 1162 閱讀 9428

使用變數操作符 ${}

1、單個#符:截掉左側,非貪婪匹配

$ 該方式是從左開始第一次匹配到字元".",然後截掉左邊內容(包括字元"."),返回餘下右側部分。

$ var=/dir1/dir2/file.tar.gz

$ echo $

tar.gz

2、雙#符:截掉左側,貪婪匹配

$該方式是從左開始最大化匹配到字元"/",然後截掉左邊內容(包括字元"/"),返回餘下右側部分。

$ var=/dir1/dir2/file.tar.gz

$ echo $

gz

當然,匹配字元不僅僅是*.和*/之類的,也可以是其他的值

注意,匹配規則遵循的是shell的萬用字元規則,不是正規表示式

$ var=/dir1/dir2/file.tar.gz

$ echo $

.gz

3、單個%符:截掉右側,非貪婪匹配

$該方式是從右開始第一次匹配到字元"/",然後截掉右邊內容(包括字元"/"),返回餘下左側部分。

$ var=/dir1/dir2/file.tar.gz

$ echo $

/dir1/dir2

4、雙%符:截掉右側,貪婪匹配

$該方式是從右開始最大化匹配到字元".",然後截掉右邊內容(包括字元"."),返回餘下左側部分。

$ var=/dir1/dir2/file.tar.gz

$ echo $

/dir1/dir2/file

通常用法

$ 提取檔名

$ 提取檔名字尾

$ 提取檔案路徑

有乙個問題值得記錄一下:

第乙個例子中var=/dir1/dir2/file.tar.gz時,通過命令$能提取tar.gz

但是如果路徑中含有字元"."會使結果不符合預期

$ var=/dir1/dir2.2/file.tar.gz

$ echo $

2/file.tar.gz

本文參考了:並在此基礎上做了整理和補充

shell變數擷取方法大全

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

shell 中變數的擷取

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

shell變數的擷取總結

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