根据开发测试分段生成等环境自定义shell脚本

时间:2013-07-17 10:14:57

标签: bash shell unix

我需要自定义我的shell脚本。我的工作空间中有一些环境/属性文件,其中shell脚本必须在安装期间根据环境选取相应的变量。

例如:如果属性文件中的变量定义如下:

com.prod.filename=PRODFILE
com.test.filename=TESTFILE
com.dev.filename=DEVFILE

当我安装任何项目或在运行时根据环境,它必须选择所需的正确文件。也就是说,如果环境是测试的,那么它必须选择TESTFILE。

2 个答案:

答案 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