【问题标题】:Customize shell scripts based on environment like development test staging production根据开发测试登台生产等环境自定义shell脚本
【发布时间】:2013-07-17 10:14:57
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: bash shell unix


    【解决方案1】:

    首先,您的属性文件都应该遵循相同的命名约定。

    例如

    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
    

    【讨论】:

    • 非常感谢您的帮助。
    【解决方案2】:

    创建一个associative array 并将文件名与相应的环境名称相关联:

    #!/bin/bash
    
    declare -A filename
    filename[prod]=PRODFILE
    filename[test]=TESTFILE
    filename[dev]=DEVFILE
    
    environ=test
    echo "${filename[$environ]}"
    

    输出:

    TESTFILE
    

    【讨论】:

      猜你喜欢
      • 2016-02-27
      • 1970-01-01
      • 2015-01-31
      • 1970-01-01
      • 2015-04-12
      • 2018-09-07
      • 1970-01-01
      • 2015-12-07
      • 2023-03-25
      相关资源
      最近更新 更多