gpt4 book ai didi

bash - 使用 `env` 命令和按文件传递环境变量的最佳方法

转载 作者:行者123 更新时间:2023-12-04 10:53:26 28 4
gpt4 key购买 nike

我们目前有一个命令,用于仅为以下参数/命令设置环境。环境变量由文件设置,通过一个简单的 cat命令:

env $(cat "$1") <rest of the command>

然而, shellcheck似乎将此标记为“引用此内容以防止分词.shellcheck(SC2046)”。

处理此错误的最佳方法是什么,因为我不确定在这种特殊情况下简单地忽略它是否正确?据我所知,有多种路线可供选择(使用 xargs ,遵循 "useless cat" 的原则等)。

示例环境文件:
VARIABLE_1=TEST
VARIABLE_2=TEST2

更新

我希望社区能就如何编写这样的内容达成共识 .env文件以及如何读取这些文件。与我们在命令之前内联相比,文件和解释器不应该做更多的魔术。

最佳答案

Shellcheck(像往常一样)提示缺少引号是正确的。如果值有嵌入的空格,代码将中断,如果它们包含 shell 通配符,代码可能会中断。

添加引号 ( env "$(< "$1")" ... ) 不起作用。它只会设置一个带有嵌入换行符的环境变量,这将使 env输出看起来表面上是正确的,但 set和类似的将表明值是错误的

一种安全且 Shellcheck-clean 的方法是将文件的行读入一个数组并将每一行作为单独的参数传递给 env :

readarray -t settings <"$1"
env "${settings[@]}" ...

关于bash - 使用 `env` 命令和按文件传递环境变量的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59353986/

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