AIX: leva 2 execuções para ver o resultado verdadeiro

0

Por que toda vez que eu executo meu script, eu executei 2 execuções antes de ver o resultado verdadeiro,

script_dir=/opt/scripts/x186299

smo_log=/oracle/bxcons21/base/admin/bxcons21/scripts/logs

error_txt=$script_dir/logs/SMO_error.txt

count_error=$script_dir/logs/count_error.txt

yest=$script_dir/logs/yesterday.txt

ECount='cat $count_error'

rm $error_txt $count_error $yest

echo 'TZ=MDT+48 date +%Y%m%d' > $yest

cd $smo_log

#grep -i "Error invoking command" $yest_* >> $error_txt

echo "Error invoking command" >> $error_txt

cat $error_txt | wc -l >> $count_error

if [ $ECount = 0 ];

then

    echo "SMO Backup is failed"

    exit

else

    echo "SMO Backup is succesful"

    exit

fi


if I ran this, it will show succesfull, then if I changed this part to

old

"#grep -i "Error invoking command" $yest_* >> $error_txt

"echo "Error invoking command" >> $error_txt

new

"grep -i "Error invoking command" $yest_* >> $error_txt

"#echo "Error invoking command" >> $error_txt

Espero ver a mensagem com falha, mas, infelizmente, mostrando êxito, se eu executar novamente o script, sem alterar, ele mostrará a mensagem com falha.

ficando em negrito se usado apenas #, então eu coloco "em grep & echo line

    
por Jayskiee08 12.06.2018 / 06:16

1 resposta

1

Você definiu ECount muito cedo, nesse momento, o arquivo count_error ainda está vazio quando o script é executado pela primeira vez:

ECount='cat $count_error'
...
grep -i "Error invoking command" $yest_* >> $error_txt
...
cat $error_txt | wc -l >> $count_error
if [ $ECount = 0 ];

Use

grep -i "Error invoking command" $yest_* >> $error_txt
...
wc -l $error_txt >> $count_error
ECount='cat $count_error'
if [ $ECount = 0 ];

em vez disso, ou (se você não precisar do arquivo mais tarde)

ECount='wc -l $error_txt'
if [ $ECount = 0 ];
    
por 12.06.2018 / 08:55

Tags