运行文件并解析占位符变量

时间:2013-11-27 11:52:26

标签: linux bash shell sed debian

我已经过了几天,我完全陷入了困境。我将占位符变量放在我的文件中,格式如下:* $ PLACEHOLDER_VAR *,原始变量为 $ VAR

原始config.conf

TEST="$PLACEHOLDER_USERNAME"
TEST2="$PLACEHOLDER_PASSWORD"

我想要做的是拥有一个包含已定义变量的deploy.sh,并且可以运行一个命令,该命令将使用定义的变量替换任何占位符变量,如下所示:

新的config.conf

TEST="Tom"
TEST2="abc123"

我的deploy.sh需要一个命令,它可以用于任何占位符变量。

$ PLACEHOLDER_USERNAME - > $ USERNAME - >汤姆

使用username作为示例的示例(但不是正确的)deploy.sh

USERNAME="Tom"
PASSWORD="abc123"
FILE="config.conf"
sed -i s/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g $FILE

有人可以帮我完成这个脚本吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

USERNAME="Tom"
PASSWORD="abc123"
FILE="config.conf"
sed -i "s/\$PLACEHOLDER_USERNAME/$USERNAME/g" $FILE
sed -i "s/\$PLACEHOLDER_PASSWORD/$PASSWORD/g" $FILE
# perl -p -i -e "s/\$PLACEHOLDER_PASSWORD/$PASSWORD/g" $FILE

我还提供了一个perl替代sed的样本,因为我不确定上面的sed是否会起作用。

试试#2

这应该可以解决问题。

USERNAME="Tom"
PASSWORD="abc123"
LIST="USERNAME PASSWORD"
FILE="config.conf"
for item in $LIST; do
    eval "sed -i \"s/\$PLACEHOLDER_$item/\$$item/g\" $FILE"
done