Raspberry Pi sem cabeça, meu if [[ file1 -nt file 2 ]] que acha que os dois arquivos têm a mesma data de modificação

Raspberry Pi sem cabeça, meu if [[ file1 -nt file 2 ]] que acha que os dois arquivos têm a mesma data de modificação

Então eu tenho um script de player "player.sh" e um script de atualização "updater.sh".

player.sh reproduz qualquer arquivo mp3 em /home/filepath/ usando um curinga *.mp3, isso funciona conforme o esperado.

o que eu quero é que o updater.sh durma por 15 segundos, depois monte o drive USB "sda1" em/media/pi e verifique se o *.mp3 em/media/pi é mais recente que o *.mp3 em home /caminho de arquivo/

Se o arquivo for mais recente, ele interrompe a reprodução do mp3, usa RM para limpar todos os *.mp3 de /home/filepath/, copia o *.mp3 mais recente em /home/filepath/ e, em seguida, inicia o player.sh novamente para reproduza o novo arquivo.

no entanto, isso não acontece....

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

Acabei de receber um terminal cheio de "não atualizado".

Não importa o que eu faça, o script acha que os arquivos têm a mesma data de modificação, mas verifiquei os arquivos usando "stat" e as datas de modificação estão separadas por muitas horas.

Alguma ideia?

Obrigado!

Responder1

Se você disser algo como [[ /dir1/* -nt /dir2/* ]], o shell expandirá isso para parecer

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

Se você tiver exatamente um arquivo em cada diretório, issodevetrabalhar precariamente. Caso contrário, o comando não faz sentido e falhará.

Você precisa usar -ntapenas dois arquivos por vez. Você pode querer fazer algo como

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

Além disso, você está usando &onde deveria usar &&.

informação relacionada