为什么我的 bash 脚本不能导出变量?

为什么我的 bash 脚本不能导出变量?

我正在使用 MSYS 并且有一个带有变量、值键的文件 vars.txt,例如:

WINDIR C:/WINDOWS
STS_BUILD_DIRECTORY D:/STS/TMP
ALLUSERSPROFILE C:/Documents and Settings/All Users

我想读入并设置环境变量。我有一个 bash 脚本 setenv:

while read var value;
do
  echo "performing export $var=$value"
  export $var='$value'
done 

我称之为

cat vars.txt | source setenv

但是在我的环境中变量没有设置。我也尝试过把它变成一个函数,但没有成功。这里有人知道我做错了什么吗?谢谢。

答案1

管道设置了一个子shell。当子shell退出时,变量就会丢失。

尝试这个:

source setenv < vars.txt

另外,您的单引号可能会阻止变量的扩展(我不知道在 MSYS 中是否如此)。尝试将行更改export为以下内容:

export $var="$value"

如果变量不需要导出,则可以使用declare而不是。export

相关内容