Linux/UNIX:Bash脚本休眠或者延迟指定的时间

时间:2020-01-09 10:42:23  来源:igfitidea点击:

在Linux或者类似Unix的系统上,如何在bash shell脚本中暂停5秒或者2分钟?您需要使用sleep命令来添加指定时间段的延迟。 gnu/bash sleep命令的语法如下:

sleep NUMBER [SUFFIX]

SUFFIX可以是:

  • s秒(默认)
  • m分钟。
  • h小时。
  • d天。

请注意,BSD系列操作系统(例如FreeBSD)或者macOS/mac OS X中的sleep命令不带任何后缀参数(m/h/d)。
只需要几秒钟的参数。
因此,像Unix这样的系统 sleep命令的语法是:

sleep NUMBER

例子

要睡眠5秒钟,请使用:

sleep 5

想睡2分钟,使用:

sleep 2m

停止或者睡眠3小时,使用:

sleep 3h

更多示例:

### To sleep for 5 days, use: ##
sleep 5d
 
### To sleep for 1.5 seconds: ##
sleep 1.5
 
## To sleep for .5 seconds: ###
sleep .5

最常见的用法如下:

## run commmand1, sleep for 1 minute and finally run command2 ## 
command1 && sleep 1m && command2
 
## sleep in bash for loop ##
for i in {1..10}
do
  do_something_here
  sleep 5s
done
 
## run while loop to display date and hostname on screen ##
while [ : ]
do
    clear
    tput cup 5 5
    date
    tput cup 6 5
    echo "Hostname : $(hostname)"
    sleep 1
done

sleep命令Bash脚本示例

这是一个简单的示例:

#!/bin/bash
echo "Hi, I'm sleeping for 5 seconds..."
sleep 5  
echo "all Done."

在此示例中,创建锁目录。
我在这里使用[/\\:.-]以确保我们不会使用与.o文件相同的名称。
另外,该名称应基于预期的目标文件名,因为这对于并行构建很重要。

...
...
lockdir=`echo "$cofile" | sed -e 's|[/\:.-]|_|g'`.d
while true; do
  if mkdir "$lockdir" >/dev/null 2>&1; then
    break
  fi
  sleep 1
done
....
..
....

在继续之前,如何将bash shell脚本暂停5秒钟?

使用read命令:

read -p "text" -t 5
read -p "Waiting five secs for Cloudflare to clear cache...." -t 5
echo "Generating pdf file now ...."

输出示例:

Waiting five secs for Cloudflare to clear cache....
Generating pdf file now ....

其中:

  • -p" text":在超时之前显示文本,不带尾随换行符。
  • -t N:将超时设置为5秒。