2015-09-29 2 views
-1

У меня есть сценарий, где я пытаюсь сделать снимок экрана каждую секунду в течение 60 секунд и сохранять файлы как date/time.jpg однако он создает только один файл, как мне сделать время обновлять внутри цикла while?Incrementing filename in while loop

#!/bin/bash 
now=$(date +"%d%m%Y-%H%M%S") 

DISPLAY=:1 firefox http://www.bbc.co.uk > /dev/null 2>&1 & 

SECONDS=0; 
while sleep 1 && ((SECONDS <= 60)); do 
DISPLAY=:1 import -window root $now.jpg 

done 

выходы

+ SECONDS=0 
+ sleep 1 
+ DISPLAY=:1 
+ firefox http://www.bbc.co.uk 
+ ((SECONDS <= 60)) 
+ DISPLAY=:1 
+ import -window root -resize 1024x768 29092015-144315.jpg 
+ sleep 1 
+ ((SECONDS <= 60)) 
+ DISPLAY=:1 
+ import -window root -resize 1024x768 29092015-144315.jpg 
+ sleep 1 
+ ((SECONDS <= 60)) 
+ DISPLAY=:1 
+ import -window root -resize 1024x768 29092015-144315.jpg 
+ sleep 1 

Кроме того, вместо того, чтобы использовать время в качестве имени файла Я не возражаю, используя увеличивающееся значение т.е. 1.jpg 2.jpg 3.jpg 4.jpg

+0

Попробуйте с двигающимся второй строчкой в в то время как блок – Kadir

+0

Вторая строка открывает firefox для bbc.co.uk Я только хочу загрузить его один раз и захватить secreenshot каждую секунду. – Lurch

+0

Я имею в виду ** now = $ (date + "% d% m% Y-% H% M% S") ** statement – Kadir

ответ

0

Значение назначенная для переменной now, выполняется только один раз, когда эта строка оценивается, и поэтому вам нужно ее оценивать каждый раз, когда вы хотите захватить изображение.

Попробуйте этот код:

#!/bin/bash 

DISPLAY=:1 firefox http://www.bbc.co.uk > /dev/null 2>&1 & 

SECONDS=0; 
while sleep 1 && ((SECONDS <= 60)); do 
now=$(date +"%d%m%Y-%H%M%S") 
DISPLAY=:1 import -window root $now.jpg 

done 

И если вы хотите использовать сохранить файлы с номерами приращения вместо текущей даты, вы можете сделать это:

#!/bin/bash 

DISPLAY=:1 firefox http://www.bbc.co.uk > /dev/null 2>&1 & 

SECONDS=0; 
NUM_OF_FILE=0; 
while sleep 1 && ((SECONDS <= 60)); do 
NUM_OF_FILE=$((NUM_OF_FILE+1)) 
DISPLAY=:1 import -window root $NUM_OF_FILE.jpg 

done 
+0

Спасибо, что ответ Кадира теперь работает. Я также хотел бы использовать инкрементные пронумерованные имена файлов, а не как это сделать? – Lurch

+0

Я отредактировал свой ответ и добавил инкрементный способ –