我有一个简单的 shell 脚本设置为每 X 秒捕获一次图像。出于某种原因,X 的值似乎在每次循环中都加倍。
#!/bin/bash
# basic setup for time-lapse
SECONDS=1
while true
do
DATE=$(date +"%Y-%m-%d_%H%M%S")
filename=${DATE}_img.jpg
# fswebcam -r 1280x720 --timestamp "%a %Y-%b-%d %H:%M (%Z)" /home/pi/JPGS/$filename
date
echo "pausing for ${SECONDS} seconds"
sleep $SECONDS
date
echo "====="
done
这是我得到的输出。 SECONDS 的值未在循环内操作,所以我对这里发生的事情感到困惑。另外,原来的间隔是 30 秒,为了测试我把它改成了 1 秒,日期调用也是为了测试/调试。
Sun Mar 3 17:51:57 CST 2019
pausing for 1 seconds
Sun Mar 3 17:51:58 CST 2019
=====
Sun Mar 3 17:51:58 CST 2019
pausing for 2 seconds
Sun Mar 3 17:52:00 CST 2019
=====
Sun Mar 3 17:52:00 CST 2019
pausing for 4 seconds
Sun Mar 3 17:52:04 CST 2019
=====
Sun Mar 3 17:52:04 CST 2019
pausing for 8 seconds
Sun Mar 3 17:52:12 CST 2019
=====
Sun Mar 3 17:52:12 CST 2019
pausing for 16 seconds
Sun Mar 3 17:52:28 CST 2019
=====
Sun Mar 3 17:52:28 CST 2019
pausing for 32 seconds
Sun Mar 3 17:53:00 CST 2019
=====
Sun Mar 3 17:53:00 CST 2019
pausing for 64 seconds
Sun Mar 3 17:54:04 CST 2019
=====
Sun Mar 3 17:54:04 CST 2019
pausing for 128 seconds
我在这里错过了什么?
这是在树莓派下
最佳答案
为 $SECONDS
选择一个不同的名称。
$SECONDS
是一个内置的 shell 变量。它扩展为自 shell 启动以来的秒数。
来自Bash manual :
'SECONDS'
This variable expands to the number of seconds since the shell was started. Assignment to this variable resets the count to the value assigned, and the expanded value becomes the value assigned plus the number of seconds since the assignment.
关于bash 变量的值翻倍 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54975060/