2017-07-01 82 views
0

我正在使用Composer來運行一些Bash/Shell命令。在Bash中刪除單引號

所以我試圖做的是用'$ _ENV ['DB_NAME']'替換'database_name_here'。

"post-update-cmd": [ 
     "sed -i.bak 's/database_name_here/$_ENV['DB_NAME']/g' public/wp-config.php" 
    ] 

它開始,因爲這

define('DB_NAME', 'database_name_here'); 

這是即時得到結果。

define('DB_NAME', '$_ENV[DB_NAME]'); 

但它需要是這樣(沒有圍繞單引號$ _ENV [DB_NAME])

define('DB_NAME', $_ENV[DB_NAME]); 

有什麼事情我可以做,使sed命令識別單引號和刪除它們。

任何幫助將不勝感激。

謝謝,傑克。

回答

2

你可以得到sed識別和使用\x27而不是明確的單引號替換單引號:

sed -i.bak 's/\x27database_name_here\x27/$_ENV[DB_NAME]/g' test.txt 

鑑於此輸入:

define('DB_NAME', 'database_name_here'); 

輸出爲:

define('DB_NAME', $_ENV[DB_NAME]); 

另外,你可以使用雙引號爲t他以外的分隔符:

sed -i.bak "s/'database_name_here'/$_ENV[DB_NAME]/g" test.txt 

或者另一種選擇,保持單引號在外面,就是用雙引號內的單引號隔離:

sed -i.bak 's/'"'"'database_name_here'"'"'/$_ENV[DB_NAME]/g' test.txt 

類似的解決方案在使用反斜槓逃脫孤立報價之間的單引號:

sed -i.bak 's/'\''database_name_here'\''/$_ENV[DB_NAME]/g' test.txt 
+0

感謝的是,這是我的錯誤 - > [SELD \ JsonLint \ ParsingException] 「./composer.json」不包含有效Ĵ SON 第23行解析錯誤: ... g.php「,」sed -i.bak's/\ x27d ---------------------^ 無效的字符串,看起來你有一個未轉義的反斜槓在:\ x - 看起來你有一個額外的 尾隨逗號 –

+0

我不知道我明白錯誤來自哪裏......我只是從我的答案複製行到一個Bash外殼,它在那裏工作.... –

+0

我已經添加了幾個替代解決方案。 –