【问题标题】:How do I unset all variables which start with a certain prefix in Bash?如何在 Bash 中取消设置以某个前缀开头的所有变量?
【发布时间】:2022-01-07 14:18:52
【问题描述】:

我在虚拟机的环境变量中设置了一长串参数,例如

MYCONFIG_1=config1
MYCONFIG_2=list2
MYCONFIG_3=random3
MYCONFIG_4=somethingelse4
MYCONFIG_5=thanksforyourhelp5

我想一次性取消所有这些设置,而不是单独指定它们(因为它们会随着时间而改变)。这可能吗?

我已经看到了个性化的方法,例如 unset MYCONFIG_1 将成功删除 MYCONFIG_1

有没有办法引用前缀MYCONFIG 以删除所有以它开头的变量?例如。类似:

unset MYCONFIG_*

我看到的大部分内容都是引用值,而不是名称。

非常感谢。

【问题讨论】:

  • 我不是 Bash 专家,但可能会使用 echo $(printenv | cut -d'=' -f1 | grep '^MYCONFIG_') 之类的东西(echo 用于试运行)?

标签: linux bash parameters environment-variables config


【解决方案1】:

假设你的 shell 是bash,你可以在一个命令中完成它

unset ${!MYCONFIG*}

请注意,这将取消设置以MYCONFIG 开头的所有变量(无论是否为环境变量)。

【讨论】:

  • 我不知道你可以在间接变量引用中进行 globing
  • @Fravadona 这是一个记录在案的功能,在bash 手册的Shell Parameter Expansion 部分进行了说明(以${!prefix*} 开头的段落)。
猜你喜欢
  • 2014-07-25
  • 2016-12-04
  • 1970-01-01
  • 2014-02-17
  • 2021-10-12
  • 2013-01-11
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多