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 是乙個數字,表示第幾個...