1

Как зациклить команду bash пока на выходе больше не будет строки, а затем вывести время остановки цикла для вывода? Команда watch недоступна.

1 ответ1

6

Вот пример текущей date +%S , которая печатает в секундах часть текущего времени каждые полсекунды и останавливается на условии (см. Ниже):

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`

Условие остановки:

  • Если вы раскомментируете только эту строку:

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

    он будет зацикливаться, пока 5 существует на выходе (например, пока с 50 до 00)

  • Если вы раскомментируете только эту строку:

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

    он будет зацикливаться до тех пор, пока на выходе не будет 7 (то есть, пока текущие секунды не будут = 07, 17, 27, 37, 47 или 57)

Пример выходных данных , не содержащая строки 5 в данном случае):

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

Пример вывода для размещения строки 7 в этом случае):

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .