用PV制作倒计时吧

时间:2018-08-26 09:57:14

标签: bash sleep pv

在2013年displaying a countdown in a terminal之后,我想使用pv来显示进度条来改善答案。

这是我当前的脚本。

function countdown {
   date1=$((`date +%s` + $1));
   while [ "$date1" -ge `date +%s` ]; do
     echo -ne "$(date -u --date @$(($date1 - `date +%s`)) +%H:%M:%S)\r";
     sleep 0.1
   done
}

# 7 minutes countdown
countdown $((7*60))

如何使用pv来改善这一点?它看起来像跟踪进度测量数据写入。就我而言,我只需要等待,就没有指标可以衡量。

截至2018年,也许还有最好的选择?

谢谢。

2 个答案:

答案 0 :(得分:0)

您无法使用pv来改善这一点。 pv代表管道视图,它跟踪数据流的进度。了解数据的大小并测量通过它的数据量,它可以为您估计剩余时间。 如果您只需要计时器倒计时,则pv毫无用处。

您已经写了一些可以修饰的东西。网络中还存在其他您需要的脚本:http://handybashscripts.blogspot.com/2012/01/simple-timer-with-progress-bar.html

答案 1 :(得分:0)

只需使用pv进行此操作,每秒写入一个字节的字符。

secs=$((7 * 60))
while [ $secs -gt 0 ]
do 
  echo -n "."
  sleep 1
  : $((secs--))
done | pv -s $secs > /dev/null

echo -n

  -n     do not output the trailing newline

pv -s

  -s, --size SIZE          set estimated data size to SIZE bytes

sleep 1; : $((secs--))每1秒减少$secs的值