Bash为每个配置文件重新运行程序

时间:2015-04-17 10:56:09

标签: bash shell

我尝试在部署时创建配置文件,然后为每个配置文件运行我的程序,每次都将配置加载到环境变量中。这是我能做的最接近的事情:

# ADD CONFIG
mkdir /cfg
cat > /cfg/site.cfg << EOF
name = site         
url = ftp.site.com    # Location of data 
username = test          # Optional - Username credential
password = pass          # Optional - Password credential 
frequency = 1            # Optional - Update once a day
EOF

# ADD SCRIPT
cat > /run.sh << EOF
for f in cfg
do
    echo "Processing $f"
        #set env from config
        #run program with env
done

如何在运行程序之前使用我的配置设置env变量(因此可以使用该特定要求集运行)

2 个答案:

答案 0 :(得分:1)

您的脚本可以是这样的

cat > /run.sh << EOF
for f in cfg
do
    echo "Processing $f"
        #set env from config
        #run program with env
    bash -c "set -a; source $f; ./exec_prog"
done

$ f中设置的所有变量都可用于exec_prog。 希望它有所帮助。

答案 1 :(得分:1)

您可以在执行主脚本之前获取cfg文件。

CFGFILE=<Your Corresponding Config File>


# ADD SCRIPT
cat > /run.sh << EOF
CFGFILE=$1
if [ ! -f "$CFGFILE" ] 
then
    echo "Error: Unable to source file $CFGFILE" >&2
    exit 1
fi

. $CFGFILE

    echo "Processing $f"
    #set env from config
    #run program with env