我正在尝试编写一个bash脚本,并将其添加rc.local
到Raspberry Pi中以在每次启动时启动,并停留在后台,并根据一天中的时间显示不同的图像。早晨,下午和晚上的全屏图像都不同。
我的命令是:
feh -Y -x -q -D 5 -B white -F --zoom max -r ~/Pictures/1-Morning/
feh -Y -x -q -D 5 -B white -F --zoom max -r ~/Pictures/2-Afternoon/
feh -Y -x -q -D 5 -B black -F --zoom max -r ~/Pictures/3-Night/
上面的所有命令都可以单独工作并打开所需的正确图像,但是当我将这些命令移至Bash脚本时,它们将停止工作。我尝试过但还没有运气的情况下:
#!/bin/bash
fireup()
while [ $(date +"%T") -ge 06:00:00 ] && [ $(date +"%T") -lt 12:00:00 ];
do
killall feh ; feh -Y -x -q -D 5 -B white -F --zoom max -r ~/Pictures/1-Morning/;
while [ $(date +"%T") -ge 12:00:00 ] && [ $(date +"%T") -lt 19:00:00 ];
do
killall feh ; feh -Y -x -q -D 5 -B white -F --zoom max -r ~/Pictures/2-Afternoon/
while [ $(date +"%T") -ge 19:00:00 ] && [ $(date +"%T") -lt 06:00:00 ];
do
killall feh ; feh -Y -x -q -D 5 -B black -F --zoom max -r ~/Pictures/3-Night/
done
done
done
我也尝试过,crontab
但没有任何反应。
如果有人可以帮助,我将不胜感激。
您的代码以一种稍微不寻常的方式声明了一个函数。
通常,编写一个函数:
name() { commands }
而你有:
name() while ... done
这掩盖了一个事实,尽管您声明了一个函数,但您从未真正运行它!
因此,解决方案是:
fireup()
-在这种情况下,while循环将仅运行fireup
以调用该函数除此之外,同时逻辑存在问题。考虑:
while [ $(date +"%T") -ge 06:00:00 ] && [ $(date +"%T") -lt 12:00:00 ];
这将尝试比较两组字符串,就好像它们是数字一样,这将永远不会成功,并且会导致显示某种错误。
而是尝试:
while [[ $(date +%T) > 05:59:59 && $(date +%T) < 12:00:00 ]];
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句