我有一个文件模板,它将被一个 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