![Raspberry Pi 无头,我的 if [[ file1 -nt file 2 ]] 认为两个文件具有相同的修改日期](https://linux22.com/image/1567389/Raspberry%20Pi%20%E6%97%A0%E5%A4%B4%EF%BC%8C%E6%88%91%E7%9A%84%20if%20%5B%5B%20file1%20-nt%20file%202%20%5D%5D%20%E8%AE%A4%E4%B8%BA%E4%B8%A4%E4%B8%AA%E6%96%87%E4%BB%B6%E5%85%B7%E6%9C%89%E7%9B%B8%E5%90%8C%E7%9A%84%E4%BF%AE%E6%94%B9%E6%97%A5%E6%9C%9F.png)
所以我有一个播放器脚本“player.sh”和一个更新程序脚本“updater.sh”。
player.sh 使用通配符 *.mp3 播放 /home/filepath/ 中的任何 mp3 文件,一切如预期工作。
我想要的是让 updater.sh 休眠 15 秒,然后将 USB 驱动器“sda1”挂载到 /media/pi,然后检查 /media/pi 中的 *.mp3 是否比 home/filepath/ 中的 *.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) …
︙
此外,您正在使用&
应该使用的地方&&
。