Ao meu ver o problema principal é que os valores recebidos como 
parâmetros an linha-de-comando não estão sendo repassados para a função 
server_proxy.

Como a função server_proxy trata somente um parâmetro, ela poderia muito 
bem tratar somente um, ou não?

server_proxy() {  
    ip=$(echo $1 | cut -f1 -d ":")
    porta=$(echo $1 | cut -f2 -d ":")
    export http_proxy="http://${ip}:${porta}";
    export ftp_proxy="http://${ip}:${porta}";
}

Aí no programa principal faria assim:
case $1 in

-[Pp]|--[Pp][Rr][Oo][Xx][Yy]) server_proxy $2;;

esac

Ou seja, você passaria para o programa dois parâmetros. O primeiro 
dizendo qual o comando e o segundo dizendo o valor a ser setado. Como 
somente este lhe interessa, utilize-o na função server_proxy. Assim, 
para esta função, o parâmetro em questão seria o primeiro.

Assim você isola uma coisa da outra. A função não precisa tratar os 
parâmetros do programa, nem o programa precisa tratar os parâmetros da 
função, capisca?

Agora,  verifique a lógica do seu programa, pois dependendo do caso, as 
variáveis de proxy podem ter "sintaxes" diferentes:

http://ip:porta
http://[EMAIL PROTECTED]:porta
http://usuario:[EMAIL PROTECTED]:porta

Dependendo do uso que você fará no programa, talvez seja necessário 
fazer este tratamento.

Até mais.

Responder a