引用单独文件中的bash变量名称
问题描述:
假设两个文件:file1
和file2
。 file1
是一个简短的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
执行过程中正确识别?
答
由于您不执行file2,只是捕获它的内容,file2中的变量仅用作占位符。您可以将输出从cat输出到sed,如下所示:
CMDS=$(cat file2|sed -e "s/\$VAR1/$VAR1/")
+0
'sed'知道如何读取'file2'。 ['猫'没用](http://www.iki.fi/era/unix/award.html)。 – tripleee
为什么要这样做? – 123
@ 123显然,他想用'bash'作为模板系统。 – chepner
@chepner非常奇怪的方法来模板化。 – 123