具有大量文件的 shell 脚本 - 游戏中时光倒流

具有大量文件的 shell 脚本 - 游戏中时光倒流

我创建了一个 shell 脚本来在我的树莓派上每分钟捕获图像。我觉得有些事情不太对劲,因为它一直在拍照但没有保存它们。我想知道是否有人可以指出这个脚本是否应该工作:

#!/bin/bash
DATE=$(date +"%Y-%m-%d")
TIME=$(TIME +"%H%M%S")
if[! -d /media/pi/organ/$DATE]; then mkdir /media/pi/organ/$DATE; fi
raspistill -vf -ISO 100 -o /media/pi/organ/$DATE/$TIME.jpg

附加信息: raspistill -vf -ISO 100 -o /media/pi/organ/$DATE.jpg工作过

我还添加了 crontab 每分钟运行一次,这也有效:

* 8-20 * * * /home/pi/camera.sh 2>&1

我担心将其放置超过 4 周,因此文件数量会超出文件夹的限制,因此我尝试将其分解。

当我添加此脚本时,它停止工作,我不知道如何从这里进行故障排除。

答案1

在这一行中:

TIME=$(TIME +"%H%M%S")

您将变量 time 设置为以参数TIME调用的命令的输出。+"%H%M%S"

TIME据我所知, RaspberryPi 上没有命令。你应该将其更改为:

TIME=$(date +"%H%M%S")

答案2

语法中有一些错误,我认为你的意思date是变量的赋值TIME。这是我的建议:

#!/bin/bash

DATE=$(date +"%Y-%m-%d")
TIME=$(date +"%H%M%S")
OUTDIR="/media/pi/organ"

if [ ! -d "${OUTDIR}/${DATE}" ]
then 
    mkdir -p "${OUTDIR}/${DATE}" 
fi
raspistill -vf -ISO 100 -o "${OUTDIR}/${DATE}/${TIME}.jpg"

of-p还会mkdir创建父目录,否则如果父目录不存在,脚本将失败。用 覆盖保存文件系统路径的变量也是一个很好的做法"是一个很好的概述,如果您想在 shell 脚本编写方面做更多的事情,值得一读。

一般来说,set -x在脚本的开头添加 a 还会打印更多信息以进行调试。

答案3

将你的问题分解并解决。首先,获取拍摄照片并保存它的命令。

你怎么知道它正在拍照?您是否尝试过将其保存到众所周知且可写的位置,例如您自己的主目录中的测试目录?您正在运行一个似乎有-v选项的命令,它看起来很像一个详细的设置。花一些时间查看命令的输出,因为它可能会告诉您为什么它不能完成您所要求的所有操作。

然后才尝试使其自动化。不要为此使用脚本。使用类似的东西cron

关键是要循序渐进地做到这一点。

相关内容