从单独的文件引用bash变量名
假设有两个文件:从单独的文件引用bash变量名,bash,shell,variables,Bash,Shell,Variables,假设有两个文件:file1和file2file1是一个简短的Bash脚本,它引用file2以获取文本字符串。文本字符串包括一个变量名($VAR1),但变量本身在file1中分配了一个值 $ cat file1 #!/bin/bash VAR1="World" CMDS=$(cat file2) echo "$CMDS" $ cat file2 Hello $VAR1 ! $ bash file1 Hello $VAR1 ! 在上述设置下,在执行file1期间,无法正确识别变量名 $ ca
file1
和file2
file1
是一个简短的Bash脚本,它引用file2
以获取文本字符串。文本字符串包括一个变量名($VAR1
),但变量本身在file1
中分配了一个值
$ cat file1
#!/bin/bash
VAR1="World"
CMDS=$(cat file2)
echo "$CMDS"
$ cat file2
Hello $VAR1 !
$ bash file1
Hello $VAR1 !
在上述设置下,在执行file1
期间,无法正确识别变量名
$ cat file1
#!/bin/bash
VAR1="World"
CMDS=$(cat file2)
echo "$CMDS"
$ cat file2
Hello $VAR1 !
$ bash file1
Hello $VAR1 !
在执行
file1
的过程中,我需要做什么才能正确识别变量名?由于不执行file2,只需编辑其内容,file2中的变量仅用作占位符。您可以通过管道将输出从cat传输到sed,如下所示:
CMDS=$(cat file2|sed -e "s/\$VAR1/$VAR1/")
由于不执行file2,只需对其内容进行cat,因此file2中的变量仅用作占位符。您可以通过管道将输出从cat传输到sed,如下所示:
CMDS=$(cat file2|sed -e "s/\$VAR1/$VAR1/")
你为什么要这样做?@123显然,他想用
bash
作为模板系统。@chepner处理模板的方法很奇怪。你为什么要这样做?@123显然,他想用bash
作为模板系统。@chepner处理模板的方法很奇怪。sed
知道如何读取文件2
。.sedsed
知道如何读取file2
。这个