我设置了一个简单的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
我在这里想念什么?
这是在Raspberry Pi下
答案 0 :(得分:8)
为#include <iostream>
double* sqr(double d)
{
double s = d*d;
return &s;
}
int main()
{
double v2 = 3.;
double* v1 = sqr(v2); //question why not double* v1 = &sqr(v2)
std::cout<<*v1;
}
选择一个不同的名称。
$SECONDS
是一个内置的shell变量。它扩展到自启动外壳以来的秒数。
来自Bash manual:
“ SECONDS”
此变量扩展为自shell被设置以来的秒数。 开始。分配给该变量会将计数重置为值 分配,展开后的值将成为分配的值加上 自分配以来的秒数。
答案 1 :(得分:2)
$SECONDS
实际上是一种特殊的Bash Variable,用于计时脚本已运行的秒数。因为它是一个计时器,所以它每秒钟自动递增,而脚本不执行任何操作。只需将变量名更改为其他名称,就可以了。