Raspberry Pi headless, mein if [[ file1 -nt file 2 ]], das denkt, dass die beiden Dateien das gleiche Änderungsdatum haben

Raspberry Pi headless, mein if [[ file1 -nt file 2 ]], das denkt, dass die beiden Dateien das gleiche Änderungsdatum haben

Ich habe also ein Player-Skript „player.sh“ und ein Updater-Skript „updater.sh“.

player.sh spielt jede MP3-Datei in /home/filepath/ mit dem Platzhalter *.mp3 ab. Dies funktioniert wie erwartet.

Ich möchte, dass updater.sh 15 Sekunden lang schläft, dann das USB-Laufwerk „sda1“ in /media/pi einbindet und dann prüft, ob die *.mp3 in /media/pi neuer ist als die *.mp3 in home/filepath/

Wenn die Datei neuer ist, wird die MP3-Wiedergabe abgebrochen, mithilfe von RM werden alle *.mp3-Dateien aus /home/filepath/ gelöscht, die neueren *.mp3-Dateien werden in /home/filepath/ kopiert und anschließend player.sh erneut gestartet, um die neue Datei abzuspielen.

dies geschieht jedoch nicht...

#!/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

Ich bekomme nur ein Terminal voller „nicht aktualisiert“.

Was ich auch mache, das Skript geht davon aus, dass die Dateien das gleiche Änderungsdatum haben. Ich habe die Dateien jedoch mit „stat“ geprüft und zwischen den Änderungsdaten liegen viele Stunden.

Irgendwelche Ideen?

Danke!

Antwort1

Wenn Sie etwas sagen wie [[ /dir1/* -nt /dir2/* ]], erweitert die Shell das so, dass es aussieht wie

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

Wenn Sie in jedem Verzeichnis genau eine Datei haben,sollenprekär arbeiten. Andernfalls ist der Befehl unsinnig und schlägt fehl.

Sie müssen -ntnur zwei Dateien gleichzeitig verwenden. Sie können beispielsweise Folgendes tun:

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

Außerdem verwenden Sie &dort, wo Sie verwenden sollten &&.

verwandte Informationen