How do I pause my shell script for a second before continuing?
我只知道如何等待用户输入。但是,我只想暂停一下,这样我的while true就不会使我的电脑崩溃。
我试过pause(1),但上面写着-bash: syntax error near unexpected token '1'。怎么做?
使用sleep命令。
例子:
1 2 3 4 5 6
| sleep .5 # Waits 0.5 second.
sleep 5 # Waits 5 seconds.
sleep 5s # Waits 5 seconds.
sleep 5m # Waits 5 minutes.
sleep 5h # Waits 5 hours.
sleep 5d # Waits 5 days. |
在指定时间单位时,也可以使用小数;例如,sleep 1.5s。
- 我总是忘了这是江户十一〔六〕号!(pause、wait或delay会更有意义,更容易记忆。)
- 在Mac OS X上,S、M、H和D似乎没有任何影响。必须以秒为单位指定时间。
- 我认为命名是因为我们有很多编程语言@geremia中的thread.sleep函数
- 在指定时间单位时,也可以使用小数;例如,sleep 1.5s。
- @谢尔盖,这应该包括在我的回答中。
在python(问题最初被标记为python)中,您需要导入时间模块
1 2
| import time
time.sleep(1) |
或
1 2
| from time import sleep
sleep(1) |
因为shell脚本只是
执行sleep命令。如/bin/sleep。
- 是的,这也说明了这一点,只是另一个是第一个,它有一个很好的例子:)但是+1!
- 因此,虽然这不是正确的方法,但是您可以使用python -c"import time; time.sleep(1)"而不是sleep 1,将python答案与bash结合起来。
- @ BerryM。-我试一下大约需要1.2秒。python不会立即启动——您需要考虑到这一点。改为使用cx1〔2〕。但是,我们需要考虑到python启动实际需要多长时间。您需要运行以下命令:date +%N; python -c"import time; time.sleep(0)"; date +%N,以确定启动python需要多少纳秒。但这也包括从运行日期开始的一些开销。运行这个date +%N; date +%N来查找开销。python在我的机器上的开销实际上接近0.14秒。所以我要的是time.sleep(0.86)。
- 是的,虽然你永远也得不到1000米的速度,但也不是这样。
那么呢?
1
| read -p"Press enter to continue" |
- 实际上,这回答了我的问题,即使它没有回答操作。
- 这与这篇文章无关。
- @Murtahaaalsabagh和谷歌带领我来到这里,这也回答了我的问题。更多地阅读meta并了解SE站点的含义。OP得到了他的答案,现在是时候让这个职位成长起来并对很多人有用了。
- @Jessechisholm请将此答案标记为接受。
- @沙赫穆罕默阿迪不是我的作品。
我意识到我有点晚了,但是你也可以打电话叫睡觉,把休息的时间消磨掉。例如,如果我想等待3秒钟,我可以这样做:
4秒如下:
- 这个答案怎么了?这是完全正确的,不需要投反对票。
- 只是偶然发现了这一点,这是因为最受欢迎的答案,@ryndallcooper's,差不多一年前就疯狂了,其得分是-59倍,而且更深入,而且这一点仅仅是最近才出现在上面。
- @Aidandwards这也是我的最佳答案,直到我按"投票"排序(这是默认值——我想知道它是如何设置为"活动"的?)。但是,将其设置为"投票"可以解决此问题。奇怪的。
- @StackOverflow-你们应该改变它的工作方式…始终保持最高投票数第一!
- "这是因为最热门的答案…上面仍然简单地表现为更新的答案"——啊,不,不,任何人都不应该因为这些无关紧要的原因而投反对票,这些原因与答案中糟糕的内容无关。
在Mac OSX上,睡眠不需要几分钟等,只需要几秒钟。所以两分钟,
在脚本中,您可以在希望暂停的操作之间添加以下内容。这将使程序暂停5秒钟。
1 2 3
| read -p"Pause Time 5 seconds" -t 5
read -p"Continuing in 5 Seconds...." -t 5
echo"Continuing ...." |
运行多个睡眠和命令
1
| sleep 5 && cd /var/www/html && git pull && sleep 3 && cd .. |
这将在执行第一个脚本之前等待5秒钟,然后在再次更改目录之前再次休眠3秒钟。
- + 1…因为如果你在睡眠后使用一个符号,它会将睡眠发送到自己的线程,然后立即启动下一个操作(即睡眠不会延迟下一个操作)。
read -r -p"Wait 5 seconds or press any key to continue immediately" -t 5 -n 1 -s
按任意一个按钮时继续
- 虽然这个代码片段可能是解决方案,但包含一个解释确实有助于提高文章的质量。请记住,您将来会为读者回答这个问题,而这些人可能不知道您的代码建议的原因。
- 这个答案只是一个代码注释。它不试图解释给定的代码。我觉得海报误解了这个问题:"如何在用户输入同时超时的情况下等待用户输入?"