【发布时间】:2015-09-15 15:37:46
【问题描述】:
我想使用 bash 文件作为我的项目配置文件,这样无论语言如何(尤其是 bash 和 perl),所有脚本都可以使用相同的配置文件。
这不是命令行的问题
$ source configfile.sh
$ ./perlscript.pl
但在 cgi 脚本中,答案并不那么清楚。
一种方法是使用 bash cgi 文件来执行 perl 脚本。
#!/usr/bin/env bash
# mycgiscript.cgi
source /path/to/configfile.sh
perl /path/to/perlscript.pl
# i think the print functions in perlscript just output to the browser?
但如果我这样做了,那么 bash 将处理所有的 http 参数解析,除非我弄错了,否则任何 perl 的 cgi 功能和模块都会变得毫无用处。由于 perl 无论如何都会做所有的工作,似乎使用 cgi 进行参数传递应该是自然的,但也许让 bash 管理 http 请求没有真正的问题?
另一种方法是使用 Perl CGI 文件解析配置文件,并根据解析设置环境变量。 configfile.sh 中的变量虽然相互引用,但会导致复杂的解析和令人头疼的问题。
那么,在 cgi 脚本中使用 bash 配置文件设置项目特定配置/环境变量的最佳做法是什么?
【问题讨论】:
-
configfile.sh 实际上在做什么?只是设置环境变量?
-
是的,只是设置和导出环境变量,我更新了问题。但是,这些变量相互引用,因此更改一个变量会改变其他变量。
-
为什么不使用 bash 和 perl 脚本解析并相应设置其环境的格式正确的配置文件?
-
我倾向于同意罗恩的观点。如果您问我,由于所有的间接性,您的初始解决方案中有太多“魔法”。我会选择一种可以普遍解析的简单格式,然后走这条路。
-
“正确”或“简单”格式是指一堆
VAR=HARDCODED_VALUE语句吗?还是VAR=$VAL1/VALPART2仍然符合条件?