envsubst在bash for循环中未按预期工作
我试图使用bash的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
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