shell中的 , 和 的使用

2021-07-05 05:19:20 字數 1680 閱讀 7453

假設我們定義了乙個變數為:

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中的 , 和 的使用

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

shell中的 , 和 的使用

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

shell中的 , 和 的使用

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