有没有一种方法可以使用一个命令取消设置不同的变量?
unset HTTP_PROXY
unset HTTPS_PROXY
unset FTP_PROXY
unset ALL_PROXY
unset NO_PROXY
unset
采用多个变量:
unset HTTP_PROXY HTTPS_PROXY FTP_PROXY ALL_PROXY NO_PROXY
虽然有点晚了,但无论如何。根据您的变量模式,您可以缩短未设置的时间:
env
或 compgen -v
来完成。grep
或 sed
。unset
。例如您的情况可以是:
unset $(compgen -v | grep "_PROXY$")
这不完全是一个命令,但它模仿了
unset *_PROXY
,正如您在评论中所要求的那样。
使用babashka:
bb -o '(->> (System/getenv)
keys
(filter #(str/ends-with? % "_PROXY"))
(map #(str "unset " %)))' |
source /dev/stdin
虽然这不会像OP一样解决不同的前缀变量,但我需要取消设置许多类似名称的变量。互联网搜索继续将我带到这篇文章。最终,我不得不查阅我的 shell 历史记录来重新学习以下技巧。
所以...在这里发帖希望对其他人有帮助:
$ export FOOBAR=true FOOBAZ=true FOOFOO=true
$ env | grep FOO
FOOFOO=true
FOOBAZ=true
FOOBAR=true
$ unset ${!FOO@}
$ env | grep FOO
$
我们使用间接变量引用和模式匹配来返回要传递给
unset
的数组。
如果有人知道如何使用间接变量引用执行反向查找模式匹配来解决OP问题,我很乐意听取您的意见!