シェルスクリプトでプロキシ環境変数を設定する

シェルスクリプトでプロキシ環境変数を設定する

プロキシを順番に設定しようとしていますが、コマンドは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

これはできません。スクリプトには、スクリプト自体にのみ適用され、スクリプトが終了するとすぐに消える一意の変数セット(または必要に応じて環境)があります。したがって、スクリプトの親であるシェル(シェル内でスクリプトを実行しているため)は、スクリプトの環境変数と設定変数を知りません。

おすすめ記事