在设置脚本以在 Bash 中运行幻灯片时,我遇到了一个恼人的问题。幻灯片可以正常播放,但在图片(或电影)之间它会显示桌面,并且屏幕会显示上面的警告。我不知道如何修复它;或者为什么会发生这种情况。
我用来播放幻灯片的脚本非常简单:
while true
do
for f in $FILES
do
filename=$(basename "$f")
extension="${filename##*.})"
#shopt -s nocasematch
if [ $extension == "mp4" ] || [ $extension == "mov" ]
mplayer $filename -fs
elif [ $extension == "jpg" ]
timeout 5 /usr/bin/eog --fullscreen $filename
fi
done
done
现在我不确定我做错了什么,但这似乎是我能想到的编写此脚本的唯一逻辑方法。我尝试查找警告的含义,但找不到任何相关内容。我甚至不一定想解决这个问题,如果有办法抑制消息从幻灯片中弹出屏幕,我不介意这样做。
答案1
我相信你的剧本不能工作。纠正以下错误:
1 为真 2 做 3 对于 $FILES 中的 f ^––SC1009 提到的解析器错误发生在这个 for 循环中。 4 做 5 文件名=$(基本名称“$f”) 6 扩展名="${filename##*.})" 7 8 #shopt -s nocasematch 9 10 如果 [ $扩展名 == “mp4” ] || [ $扩展名 == “mov” ] ^––SC1049 你忘记了这个“if”中的“then”了吗? ^––SC1073 无法解析此 if 表达式。 11 mplayer $文件名 -fs 12 13 elif [ $扩展名 == “jpg” ] ^––SC1050 应为“then”。 ^––SC1072 应为“#”。修复所有提及的问题并重试。 14 超时 5 /usr/bin/eog --fullscreen $filename 15 十六 FI 17 18 完成 19 完成
我没有对这个脚本进行任何改进或调整。现在它在技术上是可行的。你的代码是否在逻辑上正确,你必须决定。
例如:
while true; do
for f in $FILES; do
filename=$(basename "$f")
extension="${filename##*.}"
if [ "$extension" == "mp4" ] || [ "$extension" == "mov" ]; then
mplayer "$filename" -fs
elif [ "$extension" == "jpg" ]; then
timeout 5 /usr/bin/eog --fullscreen "$filename"
fi
done
done