VOGU手游网:值得大家信赖的游戏下载站!
发布时间:2021-05-14 15:33:37来源:VOGU手游网作者:VOGU手游网
如果你想在Linux系统服务器上运行一个命令,直到它成功,有一些非常简单的方法可以做到这一点,不需要你重复输入命令或坐在屏幕前按! (重复上一条命令),直到命令成功为止。在这篇文章中,我们将看看bash的两个选项。
1、使用 while !
首先,我们来看看一个简单的例子,试图显示一个文件的内容。这个技巧是使用bash的while命令来创建一个循环,但是在你要运行的命令前加上一个 !号,这样它就可以循环,直到命令成功为止。下面是它的工作原理。
$ while ! cat missingfile
! 作为一个 "不 "条件。把这一行读成 "虽然不能显示指定的文件"。 如果文件确实丢失了,或者由于某种原因,你没有读取文件的权限,那么显示 "missingfile" 的内容的尝试就会失败。然而,为了完成while命令,你需要指定文件不可用时应该发生的事情。所以,我们在这里增加了一些行来充实while命令。
$ while ! cat missingfile
do
echo waiting for missingfile
sleep 10
done
一旦某个人或进程把missicefile丢到了, cat missfile命令应该会成功(假设你有权限查看),while命令会在下一次检查时退出。睡眠命令可以确保你不会每隔一秒钟就尝试很多次,迅速让你的屏幕上充满了 "waiting for missicefile "的消息。你检查的频率应该取决于你是想在文件可用的时候就看到它,还是要等待一段时间--在这种情况下,最多10秒。
echo命令真的不需要,除非你想被提醒你在等待文件可用的时候,否则就不需要。
一旦文件可用,while命令就会退出,你就可以进入下一步--可能是以某种方式使用该文件,或者在确定文件可用后再转到其他任务上。
你也可以在运行脚本时使用这种方法。在这个命令中,我们每隔10秒尝试一次while命令,等待runme脚本运行成功。
$ while ! ./runme
do
sleep 10
done
注意,"while ! ./runme "命令相当于指定了 "当脚本运行失败时"。
2、使用until
你也可以使用 "until "命令来完成同样的事情。你可以使用 "直到它是 "逻辑来代替 "while not "逻辑。这些命令的工作原理与上图中的相同。
$ until cat missingfile
do
echo waiting for missingfile
sleep 10
done
$ until ./runme
do
sleep 10
done
一旦出现missingfile或runme脚本成功运行,循环将退出。
3、脚本中的循环
你也可以使用while ! 或 until命令来反复尝试运行脚本中的一些命令。如果你有一个依赖其他文件运行的脚本,你可以这样做。
#!/bin/bash
until ls myscript 2>/dev/null
echo waiting
sleep 10
done
./myscript
脚本将继续尝试,直到它能运行指定的脚本。
注意,这个脚本会显示出它正在等待myscript出现的消息,但它会将测试中的错误输出发送到/dev/null(又名 "bit bucket"),以防止脚本显示错误,表明有什么东西坏了。一旦myscript可用,循环退出,脚本就会运行。
当然,你可能根本不想看到 "等待 "的信息填满你的屏幕。你可以完全省略回声命令,尤其是当你确信脚本最终会被运行,并且在完成后会收到通知。
神雕侠侣2手游氪金玩家消费指南
食物语手游腊味合蒸高阶阵容打法思路一览
商道高手最佳上阵25人怎么搭配阵容
王牌战士据点占领怎么玩 游戏模式介绍
闪耀暖暖养不起表情包 闪耀暖暖表情包大全持续更新
王牌战士团战如何切入详细讲解
王牌战争文明重启手工炸弹怎么获得
王牌战争文明重启各种资源刷新地点与详细位置大全
和平精英超高音质怎么修改 超简单修改音质办法介绍
王者荣耀
角色扮演
斗罗大陆手游
角色扮演
一刀传世
角色扮演
梦三国
角色扮演
坠落星界
其它游戏
邪恶疯人院
休闲益智
征途永恒
角色扮演
和平精英
枪战射击
神雕侠侣2
角色扮演