在 shell 脚本中设置代理环境变量

在 shell 脚本中设置代理环境变量

我正在尝试轮流设置代理;但我的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 内运行脚本)不知道脚本的环境和设置变量。

相关内容