Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从单独的文件引用bash变量名_Bash_Shell_Variables - Fatal编程技术网

从单独的文件引用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
。.sed
sed
知道如何读取
file2
。这个