首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >还原以前的值或未设置的环境变量

还原以前的值或未设置的环境变量
EN

Stack Overflow用户
提问于 2016-10-22 09:55:58
回答 1查看 1.1K关注 0票数 2

我在shell脚本中有类似的东西

代码语言:javascript
运行
复制
cd /some/folder1
savedCFLAGS=${CFLAGS-}
export CFLAGS="-fexceptions ${CFLAGS-}"
./configure --some-option -what-ever
make
export CFLAGS=${savedCFLAGS}

cd /some/folder2
./configure --some-option -what-ever
make

这或多或少是正确的,但有一个严重的缺陷。

如果CFLAGS以前是未设置的,那么在第一个块之后,它将被设置为空。

有时,这是一个问题,因为一些配置脚本只在变量实际上未设置时才使用默认值--如果变量是空的,则不会使用默认值。

让我还声明,我在脚本中多次使用这样的构造,具有多个不同的变量(这是一个用于构建完整的基于GCC的工具链的脚本)。

将变量恢复到以前的值(如果它实际上是以前设置的话)或未设置的方法(如果它在我修改之前未设置),最简单的方法是什么?

如果savedCFLAGS未被设置,我可以将它设置为特定的令牌,然后测试savedCFLAGS是否有一个与该令牌相等的值。

但是,也许还有更简单的事情?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-22 10:00:52

只需使用括号在子subshell中运行setenv+configure+make:

代码语言:javascript
运行
复制
(export CFLAGS="-fexceptions ${CFLAGS-}";./configure --some-option -what-ever; make)

它继承了副本中的环境,因此当退出子shell时,您将得到完全相同的“前一”状态: no env。脚本中的变量将被更改,并且进一步的configure命令可以正常工作。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40190736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档