Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.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
envsubst在bash for循环中未按预期工作_Bash - Fatal编程技术网

envsubst在bash for循环中未按预期工作

envsubst在bash for循环中未按预期工作,bash,Bash,我试图使用bash的envsubt将环境变量替换为文件。下面是一个无法按预期工作的简单示例: 创建包含变量替换的文件: echo 'Filename: ${FILE}' > test.txt 现在尝试在for循环中使用envsubst: for FILE in `ls`; do envsubst < test.txt; done Filename: 我不明白为什么echo会工作,而envsubst会失败。请确保导出变量,如果您有偏执狂/安全意识,可以选择在命令行中命名: exp

我试图使用bash的
envsubt
将环境变量替换为文件。下面是一个无法按预期工作的简单示例:

创建包含变量替换的文件:

echo 'Filename: ${FILE}' > test.txt
现在尝试在for循环中使用envsubst:

for FILE in `ls`; do envsubst < test.txt; done

Filename:

我不明白为什么echo会工作,而envsubst会失败。

请确保导出变量,如果您有偏执狂/安全意识,可以选择在命令行中命名:

export FILE
envsubst < template #all exported environment avail in template
envsubst '${FILE}' < template #only FILE available
导出文件
envsubs
这是因为for循环中的
文件
是一个shell变量,实际上它不是环境的一部分,因此不会传递给envsubt的环境

试试这个

for FILE in `ls`; do
    env | grep FILE;
done
并将其与此进行比较

for FILE in `ls`; do
    export FILE;
    env | grep FILE;
done
因此,如果您想使
文件
成为一个环境变量,您需要先使用
导出
内置变量

for FILE in `ls`; do
    export FILE;
    env | grep FILE;
done