读取变量输入并用变量值替换模板文件

读取变量输入并用变量值替换模板文件

在 Linux shell 脚本中,我正在读取一些变量值的输入。根据这些变量值,我需要使用输入更改模板文件。

例如。

我有一个包含内容的文件 hello.txt

--- 模板文件 hello.txt ---

Hello V_NAME
  Welcome V_NAME to the team.
Thanks

从 shell 脚本中,我读取了 V_NAME 变量约翰

#!/bin/sh
....
....
read -p "Enter Candidates Name : "  V_NAME
....
exit

然后基于 V_NAME,hello.txt现在应该是这样的.....

--- 模板文件 hello.txt ---

Hello **John** ,
  Welcome **John** to the team.
Thanks

感谢您的帮助。

谢谢-纳维德-

答案1

该示例似乎是一封套用信函,因此预计不会有不寻常的字符需要处理。该sed命令会很好,例如

#!/bin/bash
...
read -p "Enter Candidates Name : "  V_NAME
read -p "Enter Candidates start date : "  V_STARTDATE
sed "s=V_NAME=$V_NAME=g;s=V_STARTDATE=$V_STARTDATE=g" ../template/hello > hello.$V_NAME
...

如果考生姓名或开始日期包含符号,则此操作将会中断=。这假设模板位于另一个目录中。

另一种方法是使用here文档并将模板嵌入到脚本中

#!/bin/bash
...
read -p "Enter Candidates Name : "  V_NAME
read -p "Enter Candidates start date : "  V_STARTDATE
cat > hello.$V_NAME <<EOF
Hello $V_NAME
  Welcome $V_NAME to the team. I see you will be starting on $V_STARTDATE.
Thanks
EOF
...

并让 shell 进行替换。

相关内容