shell變數裡的字元替換

2021-10-04 08:54:42 字數 1865 閱讀 1957

shell變數裡的字元替換

b=$;將$裡的第乙個123替換為321

b=$;將$裡的所有123替換為321

shell除錯:

shell十三問

不過,假如你只看到 $ 只能用來界定變數名稱的話,那你就實在太小看 bash 了﹗

有興趣的話,你可先參考一下 cu 本版的精華文章:

為了完整起見,我這裡再用一些例子加以說明 $ 的一些特異功能:

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

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。 (非空值時不作處理)

tips:

以上的理解在於, 你一定要分清楚 unset 與 null 及 non-null 這三種賦值狀態.

一般而言, : 與 null 有關, 若不帶 : 的話, null 不受影響, 若帶 : 則連 null 也受影響.

還有哦,$ 可計算出變數值的長度:

$ 可得到 27 ,因為 /dir1/dir2/dir3/my.file.txt 剛好是 27 個位元組...

shell變數裡的字元替換

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!shell變數裡的字元替換 b 將 裡的第乙個123替換為321 b 將 裡的所有123替換為321 shell除錯 shell十三問 不過,假如你只看到 只能用來界定變數名稱的話,那你就實在太小看 bash 了 有興趣的話,你可先參考一下 cu ...

shell變數的替換,命令的替換,轉義字元

1,shell變數的替換 變數可以根據變數是否為空或者被刪除,而被替換為特定的值 變數本來的值 var word 如果變數為空,或者已被刪除那麼返回word,但是不改變var的值 name xiaoming echo xiaoming s age is ech age xiaoming s age ...

四 shell替換 變數 命令 轉義字元的替換

1 變數替換 根據變數的狀態 是否定義,賦值,為空 來進行替換 形式 說明 變數本來的值 如果var變數為空或者已經被unset之後,返回hello,但是不改變var的值 如果var變數為空或者已經被unset之後,返回hello,並將var的值設定為hello 如果var變數為空或者已經被unse...