Raspberry Pi 無頭,我的 if [[ file1 -nt file 2 ]] 認為這兩個檔案有相同的修改日期

Raspberry Pi 無頭,我的 if [[ file1 -nt file 2 ]] 認為這兩個檔案有相同的修改日期

所以我有一個播放器腳本“player.sh”和一個更新程式腳本“updater.sh”。

player.sh 使用通配符 *.mp3 播放 /home/filepath/ 中的任何 mp3 文件,這按預期工作。

我想要的是 updater.sh 休眠 15 秒,然後將 USB 驅動器“sda1”掛載到 /media/pi,然後檢查 /media/pi 中的 *.mp3 是否比 home 中的 *.mp3 新/文件路徑/

如果檔案較新,它會終止 mp3 播放,使用 RM 清除 /home/filepath/ 中的所有 *.mp3,將較新的 *.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/* ]],shell 會將其擴展為如下所示

[[ /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) …

另外,您正在使用&應該使用的地方&&

相關內容