我创建了一个 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
关键是要循序渐进地做到这一点。