2015-09-29 103 views
-1

我有一個腳本,我試圖捕獲屏幕截圖每秒60秒,並將文件保存爲date/time.jpg但是它只創建一個文件,我該如何讓時間在while循環內更​​新?遞增while循環中的文件名

#!/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

我的意思是**現在= $(日期+「%d%m%Y-%H%M%S」)**陳述 – 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

我編輯了我的答案並添加了增量的方式 –