shell特殊變數演示(四)shell變數子串

2021-10-03 08:13:18 字數 3145 閱讀 1067

shell變數子串

通過man bash 搜尋parameter expansion

先定義乙個變數名為daidai,注意變數名是大寫,如圖所示:

我這樣直接echo變數名是直接呼叫賦值

①顯示變數值中的字串的長度:

[root@6 scripts]# echo $

變數中自帶的計算長度的防範效率最高,在要求效率的場景下多使用!

②變數子串擷取

列印指定開始位置的字串長度,i am daidai這裡我從第三個字元開始列印(包含空格且不算第三個字元)

[root@6 scripts]# echo $

也可以制定從哪個字段開始取,取多少字段,

③從變數daidai從開頭刪除最短匹配的子串

這裡我從開頭刪除了i am 

[root@6 scripts]# echo $

輸出顯示就這是剩下了daidai了。 #

表示從開頭刪除匹配最短。

④從變數daidai從開頭刪除最長匹配的子串

[root@6 scripts]# daidai="abcabc123abc"

[root@6 scripts]# echo $daidai

abcabc123abc

[root@6 scripts]# echo $

從開頭刪除最長匹配a*c的子串,如圖所示:結果為空了,說明都是匹配上了,全部刪除。

a*c表示匹配的字串,*表示匹配所有,a*c匹配開頭為a,中間為任意多個字元,結尾為c的字串。

如圖所示:從開頭刪除的最長匹配字元a*c ,結果很明顯,如圖所示: ##

表示從開頭刪除匹配最長。

a*c表示匹配的字串,*表示匹配所有,a*c匹配開頭為a,中間為任意多個字元,結尾為c的字串。

⑤從變數daidai結尾開始刪除最短匹配的子串。

[root@6 scripts]# echo $

如圖所示:開頭保留了,只刪除結尾。 %

表示從結尾刪除匹配最短。

⑥從變數daidai結尾開始刪除最長匹配的子串

[root@6 scripts]# daidai="i am daidai"

[root@6 scripts]# echo $ 

i am da

如圖所示:從結尾刪除了最長匹配的子串 %%

表示從結尾刪除匹配最長。

⑦使用/代替第乙個指定匹配的字元並替換。(用的比較多)

⑧使用//代替所有匹配的指定字串

[root@6 scripts]# daidai="i am daidai,yes daidai"

[root@6 scripts]# echo $daidai

i am daidai,yes daidai

[root@6 scripts]# echo $

i am niuniu,yes niuniu

如圖所示:替換了所有匹配daidai的字串。

有關上述匹配刪除總結:

#表示從開頭刪除匹配最短。

##表示從開頭刪除匹配最長。

%表示從結尾刪除匹配最短。

%%表示從結尾刪除匹配最長。

a*c表示匹配的字串,*表示匹配所有,a*c匹配開頭為a,中間為任意多個字元,結尾為c的字串。

a*c表示匹配的字串,*表示匹配所有,a*c匹配開頭為a,中間為任意多個字元,結尾為c的字串。

shell 特殊變數

變數解釋 展開為 1c 2c 3c 4c 5c.其中字母c為變數 ifs 的第乙個字母,ifs預設為空.展開為 1 2 3 4 5 引數個數 上乙個命令的返回值 當前指令碼的程序id pid 上乙個後台執行程序的程序號.上乙個命令的最後乙個引數.下面的aaa bbb 為變數名 如果 aaa為空或未定...

Shell特殊變數

變數名只能包含數字 字母和下劃線,因為某些包含其他字元的變數有特殊含義,這樣的變數被稱為特殊變數。例如,表示當前shell程序的id,即pid,看下面的 echo 執行結果29949 特殊變數列表 變數含義 0 當前指令碼的檔名 n傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個引數。例如,第乙...

shell 特殊變數

前面已經講到,變數名只能包含數字 字母和下劃線,因為某些包含其他字元的變數有特殊含義,這樣的變數被稱為特殊變數。例如,表示當前shell程序的id,即pid,看下面的 echo 執行結果29949 特殊變數列表 變數 含義 0 當前指令碼的檔名 n傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個...