我正在尝试轮流设置代理;但我的export
命令不起作用。我使用的是 CentOS 7。
我回到基础知识并测试了一个非常简单的 bash 脚本,该脚本设置和取消设置环境变量,然后测试它们。环境变量似乎设置正确,但我的外部 IP 仍然显示为我的本地 IP。
$1
是以下形式的地址http://119.27.177.169:80
#!/bin/bash
function set() {
export http_proxy="$1/" # not working
export https_proxy="$1/" # not working
testExtIP
}
function unset() {
unset http_proxy
unset https_proxy
testExtIP
}
function testExtIP() {
externalHTTP=$(curl -s http://api.ipify.org) # an API that echos the external IP quickly
externalHTTPS=$(curl -s https://api.ipify.org)
echo "External HTTP: $externalHTTP; external HTTPS: $externalHTTPS"
}
case "$1" in
'set')
set $2 # speed
;;
'unset')
unset $2
;;
'test')
testExtIP $2
;;
*)
echo "Usage: $0 $versum [set|unset|test]"
;;
esac
我希望脚本返回:
External HTTP: 119.27.177.169; external HTTPS: 119.27.177.169
但我的外部IP没有设置:
External HTTP: **SERVERIP**; external HTTPS: **SERVERIP**
我已经使用各种工具进行了测试。为什么导出命令不起作用?我错过了什么重要的事情吗?
答案1
你不能这样做。脚本有自己的一组变量(或者环境,如果您愿意的话),这些变量仅适用于脚本本身,并且在脚本结束后立即消失。因此,作为脚本父级的 shell(因为您从 shell 内运行脚本)不知道脚本的环境和设置变量。