我是shell脚本的新手,所以需要一些关于使用shell脚本解析PHP文件的想法。
我们是一个PHP项目,我正在改进我们的shell脚本,用于将代码上传到生产服务器。
有一个PHP配置文件production.settings.php
需要在上传期间读取一些常量 -
BASE_PATH
(prod服务器上项目root的路径)
db_host
,db_name
等(prod数据库的数据库设置 - 用于在上传前备份数据库)
问题
如何读取常量的值?
它们的定义如下:
define("BASE_PATH","/path/to/project/root");
如何读取常量的第一个未注释值?
注意 - 常量可以在同一个文件中定义多次(让我们假设可能性 - 这可能是错误的,或者可能有行的注释实例)
到目前为止,我只能在shell脚本中使用define("BASE_PATH"
获取包含字符串grep
的行数 -
cd ..
PROJECT_ROOT=$PWD
result= grep -ic 'define("BASE_PATH",' $PROJECT_ROOT'/config/main.settings.php'
echo "see"$result
更新
查看我的其他问题以获取更多详细信息: -
Manipulating an array (printed by php-cli) in shell script,
Assigning values printed by PHP CLI to shell variables,
Initiating dynamic variables (variable variables) in bash shell script
答案 0 :(得分:1)
答案 1 :(得分:1)
只需使用php,然后调用shell脚本来调用php脚本。
假设您在defs.php
中定义了一堆定义:
define('NAME', 'JOHN');
define('HOBBY', 'FISHING');
然后创建一个php脚本get_defs.php
:
require_once 'defs.php';
$const = get_defined_constants(true);
foreach($const['user'] as $k => $v) {
echo "export $k=$v";
}
然后在你的shell脚本中运行它:
`php get_defs.php`
发生的是,get_defs.php将输出一堆export KEY=VALUE
,然后shell将运行php get_defs.php
输出的那些命令。
答案 2 :(得分:0)
如果您对PHP很满意,那么使用PHP编写shell脚本。如果你走这条路线我会把所有配置设置移动到一个配置文件... INI,YAML,XML,whetever漂浮你的船。然后,我将修改定义您的常量的应用程序的引导程序,以便从此配置文件中读取。这样您就可以在脚本和应用程序中使用它而无需更改它。