shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Problema com nome de variável


From: eduardo_a_s_amaral
Subject: Problema com nome de variável
Date: Mon, 30 Dec 2013 16:35:47 -0000
User-agent: eGroups-EW/0.82

Olá Pessoal!
Como vão?

Estou tendo um problema um tanto quanto esquisito num trecho do meu script.
Não sei porque não consigo pegar o valor de uma variável.
Vou tentar decrever oque este trecho faz:
A ideia aqui é enviar uma sequencia de imagens via SCP, vou enviar uma a uma e 
informar o progresso através o zenity. Entretanto, quero verificar se houve 
algum erro e, dependendo disso, parar a operação, informando a mensagem 
correspondente.
Segue o trecho de código:

#Variável  RETORNO_SCP utilizada para verificar se houve erros durante a 
transferência via SCP
RETORNO_SCP=0


# Variável LOOP, verifica a quantidade de arquivos que serão enviados e é usada 
no LOOP
LOOP=$(ls -ltr ${DIR}/arquivos/*.png 2> /dev/null | wc -l )

if [ ${LOOP} -gt 0 ]
then
        (
        for CONTADOR in $( seq 0 ${LOOP})
        do
                PROGRESSO=$(echo "(${CONTADOR}*100)/${LOOP}" | bc)
                echo "# Enviando ${CAMADA_LOOP}.\n${CONTADOR} de ${LOOP}, 
${PROGRESSO}% concluído."
                sleep 0.1
                scp -P${PORTA_SSH} ${DIR}/arquivos/*.png 
${USER}@${IP_CLIENTE}:${DIR}/arquivos/ &> /dev/null
                #Esta é a variável (RETORNO_SCP) que vai verificar se houve 
algum erro durante o envio. Aqui eu consigo manuseá-la sem nenhum problema  
                RETORNO_SCP=$(expr ${RETORNO_SCP} + $?)
                #Aqui funciona!!
                if [ ${RETORNO_SCP} -eq 5 ]
                then
                        zenity --error --title="Lintv3D - ${CLIENTE}" 
--text="Erro ao enviar ${CAMADA_LOOP}"
                        break;
                fi

        done) | zenity --progress --auto-close --auto-kill --percentage=0 
--width=230 --height=100      --title="Lintv3D - ${CLIENTE}"
                
        
        #Verifica se o usuário escolheu a opção Fechar/Cancelar. A variável 
$RETORNO, guarda o código de saída do último processo e a passa para uma função 
que exibe uma mensagem correspondente. Oque quero é verificar se houve algum 
erro e alterar o valor desta variável, deixando igual à $RETORNO_SCP, mas o 
problema é que a variável $RETORNO_SCP não tem valor nenhum aqui, mesmo que o 
valor tenha sido configurado no laço mais acima.
        RETORNO=$?
        #Aqui a variável $RETORNO_SCP não tem mais o valor com o qual foi 
configurada na laço for anterior
        case ${RETORNO_SCP} in
        5)
                RETORNO=1
        esac
        Verif_Status ${RETORNO}
                                                                                
        
else            
        (zenity --error \
        --window-icon="error"   \
        --title="${CLIENTE}"    \
        --text="\"${PRODUTO}\" não encontrado.")
        return 1;
fi


Basicamente é isto, deu pra entender a ideia ou compliquei muito?

Desde já, obrigado pela atenção!




reply via email to

[Prev in Thread] Current Thread [Next in Thread]