Como fazer check-in do shell script se a saída do comando contiver uma palavra específica?

0

Às vezes, tenho problemas de conectividade de rede e preciso executar novamente o comando anterior. Não tenho certeza como para a declaração if else embora?

for var in ./*
do python2.7 submit.py $var
//check if output of previous do statement has word traceback
 if    
   python2.7 submit.py $var
 else
   //if it does not contain word traceback continue with the for loop
   continue??
done
    
por quickbooks 17.11.2013 / 14:48

1 resposta

4

Assumindo que você não precisa da saída do programa para mais nada, eu faria assim:

for var in ./*
do
  while ! python2.7 submit.py "$var" | grep -qFe traceback
  do
    echo "Trying again for $var ..."
  done
  echo "Succeeded for $var."
done

Se a saída do programa for pequena, pode ser melhor redirecioná-la para uma variável e verificar isso (porque salva um fork + exec por iteração):

for var in ./*
do
  while [[ "$(python2.7 submit.py "$var")" != *traceback* ]]
  do
    echo "Trying again for $var ..."
  done
  echo "Succeeded for $var."
done
    
por 17.11.2013 / 15:39

Tags