Как зациклить команду 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