我有一个脚本,我试图每秒捕获一次屏幕截图60秒,并将文件保存为date / time.jpg但是它只创建一个文件,如何在内部进行时间更新循环?
#!/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 :(得分: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