saindo do loop infinito

1

Este código entra em um loop infinito. Como posso solucionar isso?

PGM=ot_run_hourly
PID=$$
TIMESTAMP='date +%Y%m%d%H%M%S'
MASTER_DATE_STAMP_BEGIN='date +%D'
MASTER_TIME_STAMP_BEGIN='date +%T'
DIR=/var/opt/gogd/ship/na/log

#logfiles /var/opt/gogd/ship/na/log/ot_run_hourly*.log

LOG_FILE=${DIR}/${PGM}_${TIMESTAMP}_${PID}.log
COUNTER=1

date +"Info: %m/%d/%Y %T : Step 1 : Start" | tee -a ${LOG_FILE}

while [ $COUNTER -le 5 ]
do

        date +"Info: %m/%d/%Y %T : Step 2 : Counter $COUNTER" | tee -a ${LOG_FILE}



        COUNTER ='expr $COUNTER + 1'

        sleep 60

done

date +"Info: %m/%d/%Y %T : Step 3 : Complete" | tee -a ${LOG_FILE}/var/opt/gogd/ship/scripts
    
por asahwanthash 10.02.2014 / 11:50

2 respostas

4

O problema está na seguinte linha:

COUNTER ='expr $COUNTER + 1'

Você tem um espaço depois de COUNTER . Você deveria ter visto um erro dizendo:

bash: COUNTER: command not found

Diga:

COUNTER='expr $COUNTER + 1'

em vez disso, ou melhor ainda

COUNTER=$((COUNTER + 1))
    
por 10.02.2014 / 11:54
2

A maneira de solucionar problemas é executar os comandos antes do loop while em um shell interativo, o mesmo que você usa para executar este comando.

Ignore a instrução while e copie e cole

date +"Info: %m/%d/%Y %T : Step 2 : Counter $COUNTER" | tee -a ${LOG_FILE}

e depois

COUNTER ='expr $COUNTER + 1'

ao verificar o que o shell lhe diz COUNTER: command not found e você notará que echo $COUNTER ainda dá 1 e nunca aumenta. Isso deve lhe dar uma ideia de onde começar a procurar o que corrigir.

    
por 10.02.2014 / 12:17

Tags