在继续之前,如何暂停我的shell脚本一秒钟?

642 unix bash shell terminal

我只找到了如何等待用户输入.但是,我只想暂停,以免while true我的计算机崩溃.

我试过了pause(1),但它说-bash: syntax error near unexpected token '1'.怎么做到呢?

Ryd*_*per 1133

使用该sleep命令.

例:

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.
Run Code Online (Sandbox Code Playgroud)

在指定时间单位时也可以使用小数; 例如sleep 1.5s

  • 在Mac OS X上看来,s,m,h和d都没有任何影响.您必须以秒为单位指定时间. (37认同)
  • 我总是忘记它是"睡觉"!(`pause`,`wait`或`delay`会更有意义,更容易记住.) (9认同)
  • 我认为命名是因为我们在许多编程语言@Geremia中都有`thread.sleep`函数 (6认同)

Von*_*ton 71

那怎么样:

read -p "Press enter to continue"
Run Code Online (Sandbox Code Playgroud)

  • 实际上,这回答了_my_问题,即使它没有回答OP. (25认同)
  • 这与这篇文章无关. (8认同)
  • @murtadhaalsabbagh,但与Google索引编制有很大关系:)帮帮我,顺便说一句。 (4认同)
  • read -p "Press Enter to continue" -t 1 应暂停 1 秒 (3认同)
  • @JesseChisholm 我猜人们正在寻找与 powershell/cmd `PAUSE` 等效的 bash (3认同)

Joh*_*ooy 64

在Python(问题最初标记为Python)中,您需要导入时间模块

import time
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

要么

from time import sleep
sleep(1)
Run Code Online (Sandbox Code Playgroud)

对于shell脚本来说就是

sleep 1
Run Code Online (Sandbox Code Playgroud)

哪个执行sleep命令.例如./bin/sleep

  • 是的,这也是说,它只是另一个是第一个,它有一个很好的例子:)但+1! (5认同)
  • 因此,虽然不是正确的方法,你可以使用`python -c'导入时间将python答案与Bash结合起来; time.sleep(1)"`而不是`sleep 1` :) (2认同)
  • @BerryM。-尝试大约需要1.2秒。Python不会立即启动-您需要考虑到这一点。改为使用python -c“ import time; time.sleep(0.8)”。但是,然后我们需要考虑python启动实际上需要多长时间。您需要运行以下命令:`date +%N; python -c“导入时间; time.sleep(0)”;date +%N`来确定python启动需要多少纳秒。但这还包括自运行日期起的一些开销。运行这个`date +%N; 日期+%N`以查找该开销。实际上,我机器上的Python开销接近0.14秒。所以我想要`time.sleep(0.86)`。 (2认同)

小智 40

我意识到我有点迟到了,但是你也可以打电话给睡眠并通过一段时间.例如,如果我想等待3秒钟,我可以这样做:

/bin/sleep 3
Run Code Online (Sandbox Code Playgroud)

4秒看起来像这样:

/bin/sleep 4
Run Code Online (Sandbox Code Playgroud)

  • 只是偶然发现了这一点,这是因为最受欢迎的答案@RyndallCooper,差不多一年之前的疯狂,得分多达-59倍,而且深度更深,而且这个问题仅仅因为更近一点而显得高于它. (5认同)
  • 这个答案有什么问题?这是完全正确的,不需要downvote .. (4认同)
  • "这是因为最高投票的答案......仅仅是因为最近才出现在它上面" - 呃,不,不应该因为与答案中的不良内容无关的无聊理由而拒绝投票. (3认同)
  • @AidanEdwards这也是我的最佳答案,直到我按"投票"排序(这是默认的 - 我想知道它是如何设置为"活跃"的?).将其设置为"投票"虽然修复了它.奇怪的. (2认同)

Ann*_*ile 33

在Mac OSX上,睡眠不需要几分钟/秒,只需几秒钟.所以两分钟,

sleep 120
Run Code Online (Sandbox Code Playgroud)


Rob*_*Boy 20

运行多个睡眠和命令

sleep 5 && cd /var/www/html && git pull && sleep 3 && cd ..
Run Code Online (Sandbox Code Playgroud)

这将在执行第一个脚本之前等待5秒,然后再次休眠3秒再重新更改目录.

  • +1 ...因为如果你在睡眠后使用一个&符号它将睡眠发送到它自己的线程然后立即开始下一个动作(即睡眠不会延迟下一个动作) (4认同)
  • @RobotBoy我认为最重要的是,如果第一个命令失败,&&将不会继续,但是;将要。; 也会等待,但不会检查是否成功。 (4认同)

小智 18

在脚本中,您可以在要暂停的操作之间添加以下内容.这将使例程暂停5秒钟.

read -p "Pause Time 5 seconds" -t 5
read -p "Continuing in 5 Seconds...." -t 5
echo "Continuing ...."
Run Code Online (Sandbox Code Playgroud)


And*_*rey 5

read -r -p "Wait 5 seconds or press any key to continue immediately" -t 5 -n 1 -s

按下任一按钮时继续

  • 虽然此代码段可能是解决方案,但[包括说明](// meta.stackexchange.com/questions/114762/explaining-entrely-‌基于代码的答案)确实有助于提高您的帖子质量。请记住,您将来会为读者回答这个问题,而这些人可能不知道您提出代码建议的原因。 (7认同)
  • 此答案仅是代码注释。它并不试图解释给出的代码。我觉得发帖者将问题误解为“如何等待用户输入,同时用户输入超时” (3认同)