gpt4 book ai didi

linux - 检查环境变量是否已经设置

转载 作者:IT老高 更新时间:2023-10-28 12:38:27 24 4
gpt4 key购买 nike

我正在编写一个shell脚本,我必须检查是否设置了环境变量,如果没有设置,那么我必须设置它。有什么方法可以检查 shell 脚本,是否已经设置了环境变量?

最佳答案

有条件地分配变量(无论是否在环境中)的标准解决方案是:

: ${VAR=foo}

只有在未设置的情况下,才会将 VAR 设置为值“foo”。
如果 VAR 未设置或为空字符串,要将 VAR 设置为“foo”,请使用:

: ${VAR:=foo}

要将 VAR 置于环境中,请执行以下操作:

export VAR

您也可以执行 export VAR=${VAR-foo}export VAR=${VAR:=foo},但一些较旧的 shell 不支持赋值和导出的语法在同一行。另外,DRY ;在 = 运算符的两侧使用名称是不必要的重复。 (导出变量的第二行违反了相同的原则,但感觉更好。)

请注意,通常很难确定变量是否在环境中。解析 env 的输出将不起作用。考虑:

export foo='
VAR=var-value'
env | grep VAR

生成子shell并进行测试也不起作用:

sh -c 'echo $VAR'

这表明在子shell中设置了VAR,这将表明VAR在当前进程的环境中,但可能只是在子shell的初始化中设置了VAR。然而,在功能上,结果与 VAR 在环境中的结果相同。幸运的是,您通常并不关心 VAR 是否在环境中。如果你需要它,把它放在那里。如果你需要它,把它拿出来。

关于linux - 检查环境变量是否已经设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11686208/

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