2013-07-17 32 views
2

我需要自定義我的shell腳本。我的工作空間中有一些環境/屬性文件,其中shell腳本將在安裝期間根據環境選擇各自的變量。基於環境(如開發測試階段生產)自定義shell腳本

例如:如果屬性文件中的變量定義如下:

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

,當我在此基礎上有所回暖所需的正確的文件環境中安裝任何項目或在運行時。那就是如果環境是測試,那麼它必須選擇TESTFILE。

回答

2

創建associative array和文件名稱與相應的環境名稱相關聯:

#!/bin/bash 

declare -A filename 
filename[prod]=PRODFILE 
filename[test]=TESTFILE 
filename[dev]=DEVFILE 

environ=test 
echo "${filename[$environ]}" 

輸出:

TESTFILE 
4

首先,你的屬性文件都應該遵循相同的命名約定。

例如

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 
+0

非常感謝您的幫助。 – user2503105