如何在bash脚本中动态替换PHP配置文件内define定义的版本号
解决方案
直接通过sed匹配固定键名+通配版本号的方式实现动态替换,无需提前获知原版本号:
核心逻辑
匹配define('APP_VERSION',开头的行,用[^']*匹配两个单引号之间任意内容(即原版本号),直接替换为指定的新版本号即可。
具体使用示例
- 先定义你要替换的新版本变量:
NEW_VERSION="2.0.5" # 替换为你实际需要的版本号即可
- 执行替换操作:
Linux 环境(GNU Sed)
需要备份原配置文件的场景:
sed -i.bak "s/define('APP_VERSION', '[^']*');/define('APP_VERSION', '$NEW_VERSION');/" /path/to/your/config.php
无需备份的场景:
sed -i "s/define('APP_VERSION', '[^']*');/define('APP_VERSION', '$NEW_VERSION');/" /path/to/your/config.php
macOS 环境(BSD Sed)
需要备份原配置文件的场景和Linux命令一致,无需备份的场景需指定空备份后缀:
sed -i '' "s/define('APP_VERSION', '[^']*');/define('APP_VERSION', '$NEW_VERSION');/" /path/to/your/config.php
特殊场景适配
如果你的版本号中包含/等特殊字符,将sed的分隔符替换为其他不冲突的符号(比如#)即可避免语法错误:
sed -i.bak "s#define('APP_VERSION', '[^']*');#define('APP_VERSION', '$NEW_VERSION');#" /path/to/your/config.php
结果验证
替换完成后可执行以下命令确认替换结果是否正确:
grep "define('APP_VERSION'" /path/to/your/config.php
内容的提问来源于stack exchange,提问作者Carrera
相关产品推荐
相关产品推荐

