Script simples não funciona

0

Sou muito novo no bash scripting. Eu estou tentando fazer um script para exportar as variáveis http_proxy. Isso é o que eu faço do terminal:

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

Isso funciona muito bem. Agora, aqui está meu script (chamado 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

Essencialmente, desejo definir o servidor proxy apropriado dependendo da entrada. Coloquei na pasta bin, tornei executável, adicionei bin ao caminho, entrei e saí. O terminal aceita setproxy como um comando válido (no leat não há comando não encontrado erro) Mas, quando eu faço:

$setproxy 22

Não há efeito. O proxy permanece inalterado. O que estou fazendo errado?

    
por hoodakaushal 26.08.2014 / 12:32

1 resposta

4

Quando você chama o script, um novo shell filho é chamado para executá-lo. Seus proxies são definidos, mas o proxy do processo pai (seu shell) não pode ser alterado de um processo filho. Tente pesquisar o script, por exemplo,

. setproxy 21

Em seguida, o script será interpretado pelo seu shell atual.

    
por choroba 26.08.2014 / 12:36