Shell中 的妙用

2021-07-09 05:25:36 字數 1329 閱讀 8148

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

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定義為非空值。 (保留空值及非空值)

$ :若 $file 沒設定或為空值,則使用 my.file.txt作預設值,同時將 $file定義為非空值。 (保留非空值)

$ :若 $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 我們可以用 分別替換獲得不同的值 1.截斷功能 拿掉第一條 及其左邊的字串 dir1 dir2 dir3 my.file.txt 拿掉最後一條 及其左邊的字串 my.file.txt 拿掉第乙個.及其左邊的字串...

shell中 的妙用

1.截斷功能 file dir1 dir2 dir3 my.file.txt 拿掉第一條 及其左邊的字串 dir2 dir3 my.file txt 拿掉最後一條 及其左邊的字串 my.file txt 拿掉第乙個.及其左邊的字串 file txt 拿掉最後乙個.及其左邊的字串 txt 拿掉最後條 ...

shell中 的妙用

為了完整起見,我這裡再用一些例子加以說明 的一些特異功能 假設我們定義了乙個變數為 file dir1 dir2 dir3 my.file.txt 1.截斷功能 拿掉第一條 及其左邊的字串 dir1 dir2 dir3 my.file.txt 拿掉最後一條 及其左邊的字串 my.file.txt 拿...