Shell中變數擴充套件操作

2022-06-04 11:45:13 字數 1367 閱讀 4200

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

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變數的擴充套件應用

問題 本案例要求進一步熟悉shell變數的賦值控制,主要練習或驗證下列內容 三種引號對賦值的影響 使用read命令從鍵盤讀取變數值 使用export發布全域性變數 步驟 實現此案例需要按照如下步驟進行。步驟一 三種引號對變數賦值的影響 1 雙引號的應用 使用雙引號可以界定乙個完整字串,也允許在範圍內...

shell 中變數操作的介紹

介紹下shell中的 和 使用範例,本文給出了不同情況下得到的結果。假設定義了乙個變數為 如下 file dir1 dir2 dir3 my.file.txt 可以用 分別替換得到不同的值 刪掉第乙個 及其左邊的字串 dir1 dir2 dir3 my.file.txt 刪掉最後乙個 及其左邊的字串...

Shell之變數操作

1.定義變數 為了避免與環境變數衝突,一般用小寫 如pp mydql,kdkfeof 第二賦值方案 呼叫變數使用 符號 變數疊加 2.輸出採用echo,如上圖所示 3.變數分類 自定義變數和環境變數。4.檢視 set 檢視所有變數及其值 5.刪除變數 unset 變數名,如 6.作用範圍 自定義變數...