Raspberry Pi sin cabeza, mi if [[ file1 -nt file 2 ]] que cree que los dos archivos tienen la misma fecha de modificación

Raspberry Pi sin cabeza, mi if [[ file1 -nt file 2 ]] que cree que los dos archivos tienen la misma fecha de modificación

Entonces tengo un script de reproductor "player.sh" y un script de actualización "updater.sh".

player.sh reproduce cualquier archivo mp3 en /home/filepath/ usando un comodín *.mp3, esto funciona como se esperaba.

lo que quiero es que updater.sh duerma durante 15 segundos, luego monte la unidad USB "sda1" en /media/pi, luego verifique si el *.mp3 en /media/pi es más nuevo que el *.mp3 en home /ruta de archivo/

Si el archivo es más nuevo, detiene la reproducción de mp3, usa RM para purgar todos los *.mp3 de /home/filepath/, copia el *.mp3 más nuevo en /home/filepath/ y luego inicia la copia de seguridad de player.sh nuevamente en reproducir el nuevo archivo.

sin embargo, no hace esto....

#!/bin/bash
while [ 1 ] ; do
sleep 15
sudo mount /dev/sda1 /media/pi
if [[ /media/pi/*.mp3 -nt /home/filepath/*.mp3 ]] ; then sudo pkill mpg123 & sudo rm /home/filepath/* & cp /media/pi/*.mp3 /home/filepath/ & sh /home/filepath/player.sh & echo "updated"
else echo "not updated"
fi
sudo amount -l /media/pi
done

Me acaba de salir un terminal lleno de "no actualizado".

No importa lo que haga, el script cree que los archivos tienen la misma fecha de modificación, pero he verificado los archivos usando "stat" y las fechas de modificación están separadas por muchas horas.

¿Algunas ideas?

¡Gracias!

Respuesta1

Si dices algo como [[ /dir1/* -nt /dir2/* ]], el shell lo expande para que parezca

[[ /dir1/f1 /dir1/f3 … -nt /dir2/f2 /dir2/f3 … ]]

Si tiene exactamente un archivo en cada directorio, estodeberíatrabajar precariamente. De lo contrario, el comando no tiene sentido y fallará.

Debe utilizar -ntsolo dos archivos a la vez. Quizás quieras hacer algo como

for b in /home/filepath/*.mp3
do
    b_base="${b##*/}"
    if [[ /media/pi/"b_base" -nt "$b" ]] ; then (do something) …

Además, estás usando &donde deberías usar &&.

información relacionada