识别文本文件中的 bash 变量

识别文本文件中的 bash 变量

我有一个文件模板,它将被一个 shell 脚本用来生成其他文件,并且只需使用变量更改此文件模板内的填充信息。

文件内容template.example.log

server name: $HOSTNAME
current user: $USER

我尝试不同的方法来完成这项工作。

文件内容log.sh

1)不起作用,输出文件some_log_1.log相同template.example.log且变量未改变。

FILE_TEMPLATE="`cat template.example.log`"
cat > some_log_1.log <<EOF
$FILE_TEMPLATE
EOF

2)不能使用 echo 命令,发生与上述相同的情况。

echo $FILE_TEMPLATE > some_log_1.log

但如果我这样做,它就有效了!

cat > some_log_1.log <<EOF
    server name: $HOSTNAME
    current user: $USER
EOF

输出正确!

server name: ubuntu-server
current user: leafar

但我不想以这种方式运行脚本。我想读取文本文件的内容并将其 cat 到另一个文本文件中fill the variables

我该怎么做?谢谢。Ps:抱歉我的英语不好

答案1

一个选项是用来sed编辑文件。这可以让你限制要填充的变量。

这将填写template.txt并将其输出到filled.txt:

sed -e "s/\$HOSTNAME/$HOSTNAME/" -e "s/\$USER/$USER/" template.txt > filled.txt

模板.txt:

server name: $HOSTNAME
current user: $USER

已填充.txt:

server name: ubuntu-server
current user: leafar

相关内容