Mi script bash simple para recuperar imágenes de una Raspberry Pi que tengan más de un minuto:
#!/bin/bash
time=`date +"%FT%H_%M_%S"`
imagedir="/root/pilapse/images/"
files=`ssh pi find /home/pi/weatherPi-images/ -type f -mmin +1`
echo -e "\033[1;32mFetching images from Raspberry Pi\033[1;00m"
for currFile in "${files[@]}"; do
echo -e "rsync -a --remove-source-files --info=progress2 -e ssh pi:$currFile $imagedir\n"
done
echo -e "rsync [...]"
Aquí hay solo un marcador de posición para la depuración.
Rendimiento esperado:
rsync -a --remove-source-files --info=progress2 -e ssh pi:/home/pi/weatherPi-images/2016-02-01T13_22_20.jpg /root/pilapse/images/
rsync -a --remove-source-files --info=progress2 -e ssh pi:/home/pi/weatherPi-images/2016-02-01T13_14_07.jpg /root/pilapse/images/
Salida real:
rsync -a --remove-source-files --info=progress2 -e ssh
horizon:/home/pi/weatherPi-images/2016-02-01T13_22_20.jpg
/home/pi/weatherPi-images/2016-02-01T13_14_07.jpg
/home/pi/weatherPi-images/2016-02-01T13_18_45.jpg
/home/pi/weatherPi-images/2016-02-01T13_13_37.jpg /root/pilapse/images/
De alguna manera, bash parece expandir la matriz aquí, pero ¿por qué? Según tengo entendido, el bucle foreach anterior currFile
contiene solo una ruta.
Respuesta1
No lo creaste files
como una matriz. La matriz necesita paréntesis:
files=(`ssh pi find /home/pi/weatherPi-images/ -type f -mmin +1`)
Tenga en cuenta que puede romperse si los nombres de archivos contienen espacios en blanco.