bash 变量的值翻倍 - 为什么?

标签 bash shell loops variables raspberry-pi

我有一个简单的 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/

相关文章:

bash - 在 bash 脚本中转义 sed 字符串

linux - 在 bash 脚本中永久更改目录

shell - 如何使用 shell 脚本运行带有 header 的 curl 命令

php - PHP-如果当前循环中不存在图像,则嵌套循环将拉入先前的循环图像

bash - Bash 脚本获取自身完整路径的可靠方法

Java exec() 不返回管道连接命令的预期结果

Bash 脚本,数组未按预期创建

linux - xargs -0 产生新行

java - 如何在Java中旋转星号梯形?

代码在执行时不显示任何终止输出