Linux 在bash脚本while循环中,如何结束命令以继续循环?

Linux 在bash脚本while循环中,如何结束命令以继续循环?,linux,bash,raspberry-pi,Linux,Bash,Raspberry Pi,下面是我的代码示例: #!/bin/bash while true; do wget www.website.com/picture.jpg qiv picture.jpg --command -blah -blah -blah sleep 600 done 我的问题是我怎样才能杀死奇夫?对于那些不熟悉的人,qiv以全屏模式显示图像。因此,在退出qiv(手动)之前,这个脚本不会继续运行,但我希望这是自动的!对于那些想知道的人来说,这是一个从网络中提取图片的数字相框。我的完整脚本可以运

下面是我的代码示例:

#!/bin/bash

while true; do

wget www.website.com/picture.jpg

qiv picture.jpg --command -blah -blah -blah

sleep 600

done
我的问题是我怎样才能杀死奇夫?对于那些不熟悉的人,qiv以全屏模式显示图像。因此,在退出qiv(手动)之前,这个脚本不会继续运行,但我希望这是自动的!对于那些想知道的人来说,这是一个从网络中提取图片的数字相框。我的完整脚本可以运行,但我必须手动按[ESC]才能让脚本继续运行。我相信有一个简单的命令可以做到这一点,如果没有,请您解释一下任何参数/命令,因为我对bash脚本不是很有经验

感谢您抽出时间阅读此文章,并感谢您的帮助

如果所有其他操作都失败:

while true; do

wget www.website.com/picture.jpg

killall -9 qiv                                  #<- kill backgrounded qiv

qiv picture.jpg --command -blah -blah -blah &   #<- backgrounding new qiv

sleep 600

done
为true时;做
wget www.website.com/picture.jpg
killall-9 qiv#如果所有其他操作都失败:

while true; do

wget www.website.com/picture.jpg

killall -9 qiv                                  #<- kill backgrounded qiv

qiv picture.jpg --command -blah -blah -blah &   #<- backgrounding new qiv

sleep 600

done
为true时;做
wget www.website.com/picture.jpg

killall-9 qiv#
qiv
有一个
--delay
选项,您可以给出秒数。这将设置“幻灯片放映延迟”。也许你可以用这个代替睡眠?嗨,c.anna,谢谢你花时间回复。我很抱歉没有在第一篇文章中提到必要的信息,我已经进行了适当的编辑。我使用wget下载一张图片并显示该图片10分钟,然后从同一位置重新下载(但它是另一张图片),然后显示新图片。因此,为了进入下一张图片,我必须点击[ESC],等待sleep命令退出,然后它就可以工作了。我正在尝试取消按[ESC]键。看起来您需要
T,--watch重新加载磁盘上已更改的图像。
选项。然后运行
qiv
一次,让睡眠循环收集图像。如果更改,
qiv
将重新显示。是!这听起来确实是个好主意。但是,如何运行qiv一次,然后运行常量循环?如果我只是更改代码,将qiv命令移到while循环上方并添加一个&,那么简单吗?谢谢你的回复,我看到了那个论点,但不知道如何同时运行循环和quiv。很有可能它就像
qic-t&然后循环。您可能希望跟踪
qiv
进程的PID,以便在脚本退出时(如有人中断)将其杀死。那是
$紧接着
qiv
命令:
qiv-T…&QIV_PID=$
qiv
有一个
--delay
选项,您可以给出秒数。这将设置“幻灯片放映延迟”。也许你可以用这个代替睡眠?嗨,c.anna,谢谢你花时间回复。我很抱歉没有在第一篇文章中提到必要的信息,我已经进行了适当的编辑。我使用wget下载一张图片并显示该图片10分钟,然后从同一位置重新下载(但它是另一张图片),然后显示新图片。因此,为了进入下一张图片,我必须点击[ESC],等待sleep命令退出,然后它就可以工作了。我正在尝试取消按[ESC]键。看起来您需要
T,--watch重新加载磁盘上已更改的图像。
选项。然后运行
qiv
一次,让睡眠循环收集图像。如果更改,
qiv
将重新显示。是!这听起来确实是个好主意。但是,如何运行qiv一次,然后运行常量循环?如果我只是更改代码,将qiv命令移到while循环上方并添加一个&,那么简单吗?谢谢你的回复,我看到了那个论点,但不知道如何同时运行循环和quiv。很有可能它就像
qic-t&然后循环。您可能希望跟踪
qiv
进程的PID,以便在脚本退出时(如有人中断)将其杀死。那是
$紧接着
qiv
命令:
qiv-T…&QIV_PID=$。谢谢你的回答!你能帮我回答这个问题吗:当qiv和sleep一起执行时(按照&),它是在其中一个结束后移动,还是在“两者”结束时移动。我的印象是,当两个结尾都继续,所以我没有考虑走这条路线。不要混淆<代码>和<代码>和<代码> & &代码>:QIV将在后台启动,这样脚本将立即继续。然后执行睡眠,在执行600秒wget后,当wget完成时,qiv将被终止并在后台再次启动。在这段时间里,qiv一直与脚本并行运行,因为它是以后台为基础的。把QIV当作“启动”,因为脚本不会等待QIV结束,脚本在QV的“启动”后就继续运行。谢谢你的回答!你能帮我回答这个问题吗:当qiv和sleep一起执行时(按照&),它是在其中一个结束后移动,还是在“两者”结束时移动。我的印象是,当两个结尾都继续,所以我没有考虑走这条路线。不要混淆<代码>和<代码>和<代码> & &代码>:QIV将在后台启动,这样脚本将立即继续。然后执行睡眠,在执行600秒wget后,当wget完成时,qiv将被终止并在后台再次启动。在这段时间里,qiv一直与脚本并行运行,因为它是以后台为基础的。把QIV看作“启动”,因为脚本不会等待QIV结束,脚本在QV的“启动”后就继续运行。