Raspberry Pi без голови, мій if [file1 -nt файл 2], який вважає, що два файли мають однакову дату зміни


0

Тому у мене є скрипт плеєра "player.sh" і скрипт оновлення "updater.sh".

player.sh відтворює будь-який mp3-файл в / home / filepath / за допомогою wild card * .mp3, це працює, як очікувалося.

що я хочу, щоб updater.sh заснув на 15 секунд, потім змонтував USB-пристрій "sda1" в / media / pi, а потім перевірте, чи * .mp3 в / media / pi новіше, ніж * .mp3 / filepath /

Якщо файл новий, він відтворює mp3, використовує RM для очищення всіх * .mp3 з / home / filepath /, копіює новіші *. відтворити новий файл.

однак це не робить цього ....

#!/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) …
            ︙

Також ви використовуєте & де ви повинні використовувати &&.


Завдяки Скотт! Я все ще дуже новий для кодування, як це, якщо у вас є час, ви могли б пробою, що відбувається у другому рішенні "для B в ...."
BeardyMike
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.