我需要自定义我的shell脚本。我的工作空间中有一些环境/属性文件,其中shell脚本必须在安装期间根据环境选取相应的变量。
例如:如果属性文件中的变量定义如下:
com.prod.filename=PRODFILE
com.test.filename=TESTFILE
com.dev.filename=DEVFILE
当我安装任何项目或在运行时根据环境,它必须选择所需的正确文件。也就是说,如果环境是测试的,那么它必须选择TESTFILE。
答案 0 :(得分:4)
首先,您的属性文件应遵循相同的命名约定。
e.g。
myapp/properties/dev.properties
myapp/properties/qa.properties
myapp/properties/prod.properties
您的shell脚本应根据环境变量确定要使用的属性文件,例如: APP_ENV
,默认为dev
。例如:
<强> startApp.sh:强>
#!/bin/bash
APP_ENV=${APP_ENV:-dev}
PROPERTIES_FILE=myapp/properties/${APP_ENV}.properties
# run the command using the properties file
echo "Using: ${PROPERTIES_FILE}"
mycommand ${PROPERTIES_FILE}
您可以通过更改APP_ENV
变量来运行不同环境的应用程序。例如,要在prod
中运行:
$ APP_ENV=prod startApp.sh
答案 1 :(得分:2)
创建associative array并将文件名与相应的环境名称相关联:
#!/bin/bash
declare -A filename
filename[prod]=PRODFILE
filename[test]=TESTFILE
filename[dev]=DEVFILE
environ=test
echo "${filename[$environ]}"
输出:
TESTFILE