Raspberry Pi headless, мой if [[ file1 -nt file 2 ]], который думает, что два файла имеют одинаковую дату изменения

Raspberry Pi headless, мой if [[ file1 -nt file 2 ]], который думает, что два файла имеют одинаковую дату изменения

Итак, у меня есть скрипт проигрывателя «player.sh» и скрипт обновления «updater.sh».

player.sh воспроизводит любой mp3-файл в /home/filepath/, используя подстановочный знак *.mp3, это работает так, как и ожидалось.

Мне нужно, чтобы updater.sh заснул на 15 секунд, затем смонтировал usb-накопитель "sda1" в /media/pi, а затем проверил, является ли *.mp3 в /media/pi более новым, чем *.mp3 в home/filepath/

Если файл более новый, pkill отключает воспроизведение mp3, использует RM для удаления всех *.mp3 из /home/filepath/, копирует более новый *.mp3 в /home/filepath/, а затем снова запускает player.sh для воспроизведения нового файла.

Однако, этого не происходит...

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

Я просто получаю сообщение «не обновлено».

Что бы я ни делал, скрипт считает, что файлы имеют одинаковую дату изменения, но я проверил файлы с помощью «stat», и даты изменения отличаются на много часов.

Есть идеи?

Спасибо!

решение1

Если вы скажете что-то вроде [[ /dir1/* -nt /dir2/* ]], оболочка расширит это так, чтобы оно выглядело как

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

Если у вас есть только один файл в каждом каталоге, этодолженработа нестабильна. В противном случае приказ бессмыслен и потерпит неудачу.

Вам нужно использовать -ntтолько два файла одновременно. Вы можете сделать что-то вроде

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

Кроме того, вы используете . &там, где следует использовать &&.

Связанный контент