我认为你的第三种可能性是正确的。您缺少的是包装脚本的想法,其唯一功能是设置环境,然后使用所需的任何选项调用主程序。
要制作一个可以用作控制脚本的包装器脚本(如果 prodEnv 使用 DB=ProdDB 等),还有一个可以简化此问题的部分。 Bash/ksh 都支持称为源文件的功能。这是 shell 提供的操作,用于打开文件并执行文件中的内容,就像内嵌在主脚本中一样。喜欢#include
在C和其他语言中。
ksh 和 bash 将自动获取源/etc/profile
, /var/etc/profile.local
(有时),$HOME/.profile
。还有其他文件名也会被获取,但在这种情况下,您需要创建自己的 env 文件并显式加载它。
当我们讨论包装器脚本时,并且您想要管理环境的设置方式,您将需要在包装器脚本内进行采购。
如何获取环境文件?
envFile=/path/to/my/envFile
. $envFile
其中 envFile 将填充如下语句
dbServer=DevDBServer
webServer=QAWebServer
....
您可能会发现需要导出这些变量才能使它们可见
export dbServer webServer
支持备用分配/导出
export dbServer=DevDBServer
export webServer=QAWebServer
根据不同环境的不同程度,您可以让包装器脚本确定要加载哪个环境文件。
case $( /bin/hostame ) in
prodServerName )
envFile=/path/2/prod/envFile ;;
QASeverName )
envFile=/path/2/qa/envFile ;;
devSeverName )
envFile=/path/2/dev/envFile ;;
esac
. ${envFile}
#NOW call your program
myProgram -v -f inFile -o outFile ......
当您在数据处理环境中开发越来越多的脚本时,您始终可以source
你的 envFile 在顶部。当您最终更改服务器的物理位置(或其名称)时,您只需在一个位置进行更改。
IHTH