ITNOA
我想写bash脚本,删除一些环境变量
我的问题是当我在命令下运行时
env | grep -i _proxy= | cut -d "=" -f1 | xargs -I {} echo {}
我看到下面的结果
HTTPS_PROXY
HTTP_PROXY
ALL_PROXY
但是当我将 echo
替换为 unset
时,如下所示
env | grep -i _proxy= | cut -d "=" -f1 | xargs -I {} unset {}
我看到下面的错误
xargs: unset: No such file or directory
我的问题是什么?如果我错误地使用了xargs
?
最佳答案
您有 xargs 在管道中运行。因此它在一个单独的进程中运行,并且不能改变“父”shell 的环境。
此外,xargs 使用命令,而不是 shell 内置命令。
你需要这样做:
while read -r varname; do unset "$varname"; done < <(
env | grep -i _proxy= | cut -d "=" -f1
)
或
mapfile -t varnames < <(env | grep -i _proxy= | cut -d "=" -f1)
unset "${varnames[@]}"
关于bash - 如何在 shell 脚本中使用 unset 和 xargs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69678238/