Bash expande la matriz donde solo debería usar un elemento

Bash expande la matriz donde solo debería usar un elemento

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 currFilecontiene solo una ruta.

Respuesta1

No lo creaste filescomo 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.

información relacionada