假設我們定義了乙個變數為:
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
利用$ 還可針對不同的變數狀態賦值(沒設定、空值、非空值):
$ :假如$file 沒有設定,則使用my.file.txt 作傳回值。(空值及非空值時不作處理)
$ :假如$file 沒有設定或為空值,則使用my.file.txt 作傳回值。(非空值時不作處理)
$ :假如$file 設為空值或非空值,均使用my.file.txt 作傳回值。(沒設定時不作處理)
$ :若$file 為非空值,則使用my.file.txt 作傳回值。(沒設定及空值時不作處理)
$ :若$file 沒設定,則使用my.file.txt 作傳回值,同時將$file 賦值為my.file.txt 。(空值及非空值時不作處理)
$ :若$file 沒設定或為空值,則使用my.file.txt 作傳回值,同時將$file 賦值為my.file.txt 。(非空值時不作處理)
$ :若$file 沒設定,則將my.file.txt 輸出至stderr。(空值及非空值時不作處理)
$ :若$file 沒設定或為空值,則將my.file.txt 輸出至stderr。(非空值時不作處理)
$ 可計算出變數值的長度:
$ 可得到27 ,因為/dir1/dir2/dir3/my.file.txt 是27個位元組
shell中引號的作用
引號包含雙引號,單引號,反引號,反斜槓 作用如下 search dbl vm 211 13 algorithm echo 24782 search dbl vm 211 13 algorithm echo 單引號把特殊符號給轉義了 search dbl vm 211 13 algorithm ech...
Shell中括號的作用
命令組。括號中的命令將會斷開乙個子shell順序執行,所以括號中的變數不能被指令碼餘下的部分使用。括號中多個命令之間用分號隔開,最後乙個命令可以沒有分號,各命令和括號之間不必有空格。命令替換。等同於 cmd shell掃瞄一遍命令列,發現了 cmd 結構,便將 cmd 中的cmd執行一次,得到其標準...
shell中豎線的作用 Shell中符號意義
末端 end of line 這個常用在 grep sed awk 以及 vim vi 當中。變數的正規表示式 bash 對 定義了不少用法。見本文後部 引用script 的執行引用變數 引用引數的演算法與一般指令相同,指令本身為0,其後為1,然後依此類推。引用變數的代表方式如下 0,1,2,3,4...