当通过函数的管道重定向回显时,未设置环境变量

当通过函数的管道重定向回显时,未设置环境变量

这个命令:

echo '18' | source meta-cmf-raspberrypi/setup-environment

没有设置环境变量,而是简单地发生了:

source meta-cmf-raspberrypi/setup-environment

输入“18”。
链接中的问题:在管道中调用我的函数时未设置环境变量

没有解决我的问题,因为我已经尝试过:

echo '18' > >(source meta-cmf-raspberrypi/setup-environment)

没有成功。我该如何解决这个问题?

答案1

在管道中,脚本是在单独的环境中获取的。在流程替换示例中也是如此。这意味着脚本中设置的变量将在调用 shell 的子环境中设置。子环境中的更改永远不会传播到父环境。

您可以通过两种方式解决此问题,避免在单独的环境中获取脚本。

第一种方法可以在理解“h​​ere-strings”的 shell 中工作:

source meta-cmf-raspberrypi/setup-environment <<<18

第二种方法是使用标准的此处文档:

source meta-cmf-raspberrypi/setup-environment <<END_INPUT
18
END_INPUT

在这两种变体中,脚本均源自当前环境,其输入从此处字符串/此处文档重定向。

相关内容