使用變數操作符 ${}
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...