我使用Composer运行一些Bash / Shell命令。
所以我要做的就是替换' database_name_here'使用' $ _ ENV [' DB_NAME']'。
"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命令识别单引号并删除它们。
非常感谢任何帮助。
谢谢,杰克。
答案 0 :(得分: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]);
或者,您可以使用双引号作为外部分隔符:
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