使用shell加载变量以替换占位符

时间:2013-11-26 11:46:47

标签: linux bash shell debian

我遇到一个问题,我的配置文件内容放在我的部署脚本中,因为他们从我的setting.sh文件中获取了他们的设置。这导致我的部署脚本非常庞大。

我想知道在bash中是否可以做这样的事情

setting.sh

USER="Tom"

log.conf

log=/$PLACEHOLDER_USER/full.log

deployment.sh

#!/bin/bash

# Pull in settings file
. ./settings.sh

# Link config to right location
ln -s /home/log.conf /home/logging/log.conf

# Write variables on top of placeholder variables in the file
for $PLACEHOLDER_* in /home/logging/log.conf
do
(Replace $PLACEHOLDER_<VARAIBLE> with $VARIABLE)
done

我希望这适用于配置文件中以$ placeholder _

开头的任何变量

这个过程允许我从我的存储库移动一个通用的配置文件,然后在我的设置文件中添加适当的变量在配置中的占位符变量之上。

我一直坚持如何使用deployment.sh来实现这一点。

2 个答案:

答案 0 :(得分:1)

这个小脚本将读取settings.sh中的所有变量行,并替换每个PLACEHOLDER_xxx中的file。这对你有帮助吗?

while IFS== read variable value
do
  sed -i "s/\$PLACEHOLDER_$variable/$value/g" file
done < settings.sh

答案 1 :(得分:0)

#!/usr/local/env bash
set -x

ln -s /home/log.conf /home/logging/log.conf

while read user
do
usertmp=$(echo "${user}" | sed s'@USER=\"@@' \
sed s'@"$@@')
user="${usertemp}"
log="${user}"/full.log
done < setting.sh

我不太了解你要做的其他事情,我会承认,但这有希望给你这个想法。使用阅读。