今天遇到了乙個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...