当前位置: 首页 > 知识库问答 >
问题:

后端 - bash 脚本中两次 export 同一个变量会改变该变量的值吗?

轩辕涵亮
2023-05-31

我有个 bash 脚本,伪代码如下:

使用内网下载一些东西
......
export https_proxy='192.168.1.133:1080' #第一次
通过设置代理使用外网下载一些东西
......
export https_proxy='' #第二次
使用内网下载一些东西
......

我想请问一下我第二次 export https_proxy 能达到清空这个变量的值的目的吗?因为之后的下载我不想走代理,我这个写法能否达到我的期望呢?谢谢。

共有2个答案

汪思博
2023-05-31

export全局只需要一次,无论后续是否加export都不影响你的变量会注入子进程的事实

你的第二个赋值会成功,但不是清空,而是设置成空字符串而已。如果你想删除变量,应该用unset

汪飞捷
2023-05-31

把你的

export https_proxy=''

改成

unset https_proxy
 类似资料:
  • 问题内容: 我正在尝试为变量分配数组长度。 它说找不到len命令。为什么? 问题答案: 变量名和赋值运算符之间不能有空格。如果这样做,会将变量名称视为命令。 尝试:

  • 请考虑以下内容:你希望程序打印出你的用户名。这个程序怎么知道的?在 Linux 中有一些环境变量。这意味着你的 shell 中有许多变量,其中许多变量自动设置,每次运行程序时,其中一些变量将传递给该程序。 详细说明: 一些变量只为你当前的 shell 设置。它们被称为本地 shell 变量。你可以通过键入set,一个 bash 内置命令来列出它们 ,这意味着没有启动其它程序,之后你执行了它。此命令

  • 问题内容: 假设我有一个全局变量。在函数定义中,我们还有一个名为的局部变量。有什么方法可以将全局变量的值分配给局部变量的值? 问题答案: 使用内置功能。 返回表示当前全局符号表的字典。 这始终是当前模块的字典(在函数或方法中,这是定义该模块的模块,而不是从中调用该模块的模块)。 顺便说一句,值得一提的是,全局只是模块范围内的“全局”。

  • 问题内容: 我有一个正在TOAD中执行的SQL脚本。目前,我只用一个语句一个语句地布置它,因此: 等等。一些where子句最终是重复的,因为我需要复杂的内部查询来获取要操作的特定ID。我想在脚本的开头捕获一个变量中的ID,然后在后续的where子句中使用该变量。所以像这样: 显然,我正在构造该语法,但这就是我想要的。但是我不确定在TOAD脚本中是否可行。我知道我可以将整个内容转换为PL / SQL

  • 问题内容: 我正在编写一个脚本来备份数据库。我有以下几行: 我想将stderr分配给一个变量,以便它将向自己发送一封电子邮件,让我知道如果出现问题,会发生什么。我已经找到了将stderr重定向到stdout的解决方案,但是由于stdout已经(通过gzip)发送到文件中,因此我无法做到这一点。如何将stderr分别存储在变量$ result中? 问题答案: 尝试将stderr重定向到stdout并

  • 测验sh包含: 我设置测试。sh至chmod 777 我用两个参数开始脚本: 然后我通过键入以下内容进行测试: 结果: 我做错了什么?