Einfaches Bash-Skript funktioniert nicht

Einfaches Bash-Skript funktioniert nicht

Ich bin ziemlich neu im Bash-Scripting. Ich versuche, ein Skript zum Exportieren der http_proxy-Variablen zu erstellen. Folgendes mache ich vom Terminal aus:

$export http_proxy=http://proxy21.iitd.ernet.in:3128/
$export https_proxy=https://proxy21.iitd.ernet.in:3128/

Das funktioniert einwandfrei. Hier ist mein Skript (mit dem Namen setproxy):

#!/usr/bin/env bash
if [ $1 -eq 22 ]
then
    export http_proxy=http://proxy22.iitd.ernet.in:3128/
    export https_proxy=https://proxy22.iitd.ernet.in:3128/
elif [ $1 -eq 21 ]
then
    export http_proxy=http://proxy21.iitd.ernet.in:3128/
    export https_proxy=https://proxy21.iitd.ernet.in:3128/
elif [ $1 -eq 61 ]
then
    export http_proxy=http://proxy61.iitd.ernet.in:3128/
    export https_proxy=https://proxy61.iitd.ernet.in:3128/
elif [ $1 -eq 62 ]
then
    export http_proxy=http://proxy62.iitd.ernet.in:3128/
    export https_proxy=https://proxy62.iitd.ernet.in:3128/
fi

Im Wesentlichen möchte ich den entsprechenden Proxyserver abhängig von der Eingabe festlegen. Ich habe es in den Bin-Ordner gelegt, es ausführbar gemacht, Bin zum Pfad hinzugefügt, mich angemeldet und abgemeldet. Das Terminal akzeptiert setproxy als gültigen Befehl (zumindest gibt es keinen Fehler „Befehl nicht gefunden“). Aber wenn ich das tue:

$setproxy 22

Es gibt keinen Effekt. Der Proxy bleibt unverändert. Was mache ich falsch?

Antwort1

Wenn Sie das Skript aufrufen, wird eine neue untergeordnete Shell aufgerufen, um es auszuführen. Ihre Proxys sind festgelegt, aber der Proxy des übergeordneten Prozesses (Ihre Shell) kann nicht von einem untergeordneten Prozess aus geändert werden. Versuchen SieBeschaffungdas Skript, d. h. nennen Sie es wie

. setproxy 21

Dann wird das Skript von Ihrer aktuellen Shell interpretiert.

verwandte Informationen