shell 變數替換問題

2021-10-05 22:35:22 字數 558 閱讀 3060

今天遇到了乙個sed替換的問題,背景是,我需要替換某乙個yaml 檔案的某乙個key值為乙個變數。採用以下的**

substring="s/source:.*/source: $/g"

targetfile=***.yaml

sed -i $ $

這個時候會報sed: -e expression #1, char 34: unknown option to `s'這個問題。

當我debug時,將substring 複製下來在本地執行時卻沒有了這個問題,這個就十分奇怪,困擾了許久

後來發現,我在debug的時候犯了乙個重大錯誤,我誤認為echo $ == "s/source:.*/source: $/g", 但是其實不是的,echo $ == s/source:.*/source: $/g, 這個才是正確的。 這也是為什麼在編譯指令碼上失敗的原因。

解決方案是去掉substring, 直接使用sed -i "s/source:.*/source: $/g" $

shell指令碼變數替換

bin bash variable 1 me i love you,do you love me girl i don t love you,go away n 從變數開頭進行匹配,將符合匹配最短的字串刪除 echo befor delete variable 1 var1 echo after d...

shell 指令碼 變數替換總結

shell指令碼中進行字元刪除操作 使用 和 進行匹配刪除,具體的 和 的總結如下 從頭開始匹配,最短刪除 從頭開始匹配,最長刪除 從尾部開始匹配,最短刪除 從尾部開始匹配,最長刪除 替換變數內的舊字串為新字串,只替換第乙個 替換變數內的舊字串為新字串,全部替換下面舉幾個例子進行說明 1.關於 的替...

shell 變數刪除與替換

1 從左往右刪除匹配內容 root localhost echo 獲取變數值 root localhost echo 獲取變數長度 16 root localhost echo 從左往右最短匹配 root localhost echo 從左往右最長匹配 cn2 從右往左刪除匹配內容 root loc...