引用单独文件中的bash变量名称

问题描述:

假设两个文件:file1file2file1是一个简短的Bash脚本,即引用file2以获取文本字符串。文本字符串包含一个变量名称($VAR1),但变量本身在file1中分配了一个值。引用单独文件中的bash变量名称

$ cat file1 
#!/bin/bash 
VAR1="World" 
CMDS=$(cat file2) 
echo "$CMDS" 

$ cat file2 
Hello $VAR1 ! 

在上述设置下,在执行file1时,变量名称无法正确识别。

$ bash file1 
Hello $VAR1 ! 

什么我需要做的,这样的变量名的file1执行过程中正确识别?

+2

为什么要这样做? – 123

+0

@ 123显然,他想用'bash'作为模板系统。 – chepner

+0

@chepner非常奇怪的方法来模板化。 – 123

由于您不执行file2,只是捕获它的内容,file2中的变量仅用作占位符。您可以将输出从cat输出到sed,如下所示:

CMDS=$(cat file2|sed -e "s/\$VAR1/$VAR1/") 
+0

'sed'知道如何读取'file2'。 ['猫'没用](http://www.iki.fi/era/unix/award.html)。 – tripleee