Comando loop bash até que a saída não contenha mais uma string

0

Como fazer o loop do comando bash até que a saída não contenha mais uma string e depois imprima a hora em que o loop foi interrompido para a saída? O comando watch não está disponível.

    
por make 02.03.2012 / 00:29

1 resposta

4

Veja um exemplo de execução de date +%S , que imprime segundos da hora atual, a cada meio segundo e para em uma condição (veja abaixo):

while true; do
  str='date +%S'
  echo Output: $str
  # Use the below when you want the output not to contain some string
  if [[ ! $str =~ 5 ]]; then
  # Use the below when you want the output to contain some string
  # if [[ $str =~ 7 ]]; then
    break
  fi
  sleep .5
done
echo Finished: 'date'

A parada da condição:

  • Se você descomentar esta linha apenas:

    if [[ ! $str =~ 5 ]]; then
    

    ele fará um loop enquanto 5 existir na saída (por exemplo, enquanto de 50 até 00 )

  • Se você descomentar esta linha apenas:

    if [[ $str =~ 7 ]]; then
    

    ele irá loop até que 7 exista na saída (ou seja, até os segundos atuais = 07, 17, 27, 37, 47 ou 57)

Exemplo de saída para não conter string ( 5 neste caso):

Output: 56
Output: 57
Output: 57
Output: 58
Output: 58
Output: 59
Output: 59
Output: 00
Finished: Thu Mar 1 20:16:00 EST 2012

Exemplo de saída para conter string ( 7 neste caso):

Output: 08
Output: 09
Output: 09
Output: 10
Output: 10
Output: 11
Output: 11
Output: 12
Output: 12
Output: 13
Output: 13
Output: 14
Output: 14
Output: 15
Output: 15
Output: 16
Output: 16
Output: 17
Finished: Thu Mar 1 19:58:17 EST 2012
    
por 02.03.2012 / 02:00

Tags