我只是尝试使用 bash 脚本替换 php.ini 文件中的设置。
这是我的情况:
我有一个非常具体的设置,默认值是:
;date.timezone =
现在,我尝试将其替换为sed
:
date.timezone = "America/Mexico_City"
我尝试使用的命令是这样的:
sed -i '/^;date\.timezone[[:space:]]=.*$/date.timezone = "America/Mexico_City"' php.ini
但我明白了:
sed: -e expression #1, char 35: extra characters after command
我真的不知道为什么,但如果我只留下一个字符,它就可以工作(不是预期的方式,但它不会返回错误)。例子:
sed -i '/^;date\.timezone[[:space:]]=.*$/d' php.ini
这只是删除了该行;date.timezone =
我对 sed 真的很陌生,非常感谢任何帮助。
谢谢
答案1
你正在尝试s将一种模式替换为另一种模式,因此您需要使用 seds
命令,其形式为
's/pattern/replacement/'
此外,您需要转义/
模式或替换字符串中的任何字符(在您的情况下"America\/Mexico_City"
)。所以
sed 's/^;date\.timezone[[:space:]]=.*$/date.timezone = "America\/Mexico_City"/'
或者,您可以通过使用不同的模式替换分隔符来避免转义斜杠,s#pattern#replacement#
例如
sed 's#^;date\.timezone[[:space:]]=.*$#date.timezone = "America/Mexico_City"#'