gpt4 book ai didi

bash - envsubst 在 bash for 循环中没有按预期工作

转载 作者:行者123 更新时间:2023-12-04 16:42:10 25 4
gpt4 key购买 nike

我正在尝试使用 bash 的 envsubst 将环境变量替换到文件中。这是一个无法按预期工作的简单示例:

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

echo 'Filename: ${FILE}' > test.txt

现在尝试在 for 循环中使用 envsubst:

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

Filename:

结果只是 Filename: 替换失败。

Echo 在此上下文中按预期工作:

for FILE in `ls`; do echo Filename: ${FILE}; done

Filename: test.txt

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

最佳答案

那是因为在 for 循环中 FILE 是一个 shell 变量,它实际上不是环境的一部分,所以它没有传递给 envsubst 的环境。

试试这个

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

和这个比较

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

所以如果你想让FILE成为一个环境变量,你需要使用之前内置的export

关于bash - envsubst 在 bash for 循环中没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58443542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com