gpt4 book ai didi

linux - 检查文件是否在循环中创建,如果不是,则在下一次迭代时再次创建

转载 作者:太空宇宙 更新时间:2023-11-04 09:15:32 25 4
gpt4 key购买 nike

我使用 fswebcam 编写了一个简短的 bash 脚本,使用 USB 网络摄像头和 RPi 拍摄延时照片,并使用一串前导零按顺序命名文件。

代码:

#!/bin/bash
counter=0
while [ $counter -lt 999999 ]; do
number=$(printf "%07d" "$counter")
sudo fswebcam -r 1920x1080 --no-banner ./$number.jpg
let counter=counter+1
sleep 30
done

每隔一段时间(在 86,000 多次迭代中发生 3 次)无论出于何种原因,它都无法将文件写入磁盘,从而有效地破坏序列。

如何改进代码以检查是否确实创建了具有最后一次迭代编号的文件,如果没有,则尝试再次创建它?

最佳答案

可以检查之前的文件是否存在:

像这样的一些逻辑:

#!/bin/bash
counter=1
while [ $counter -lt 999999 ]; do
number=$(printf "%07d" "$counter")
let pre_counter=counter-1
pre_numer=$(printf "%07d" "$pre_counter")
if [ ! -f ./$pre_numer.jpg ]; then
sudo fswebcam -r 1920x1080 --no-banner ./$pre_numer.jpg
else
sudo fswebcam -r 1920x1080 --no-banner ./$number.jpg
let counter=counter+1
fi;
sleep 30
done

注意:我还没有测试过这个

编辑:修复了导致语法错误的间距。

关于linux - 检查文件是否在循环中创建,如果不是,则在下一次迭代时再次创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48342149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com