'yum -y update'运行时,如何每隔2秒回显一段时间?

Mis*_*iry 2 bash loops yum while-loop

我正在编写一个脚本来对客户服务器进行一些默认配置,并使其几乎100%正常工作.

我无法弄清楚的是如何运行yum -y update某种回声"回声".在更新时每两秒钟.

这是一个代码示例,以帮助解释更多

YUMLOG=/var/log/config.log
while [ yum -y update > $YUMLOG 2>&1 ]
do
    echo "."
    sleep 2
done
Run Code Online (Sandbox Code Playgroud)

显然,这不起作用,但我不知道要做什么改变,以便它确实有效.我在代码中有其他部分给我这个'进度条'效果,但没有任何内部循环.例如:

if [ $SETXENNET != "y" ]; then
        sleep 1
        cp $TEMPLATEDIR/rc.local.template $TEMPLATEDIR/rc.local.new
        echo "."
        sleep 1
        cp $TEMPLATEDIR/rc.local.new /etc/rc.local
        echo "."
        sleep 1
        chmod a+x /etc/rc.local
        echo "."
        sleep 1
    else
        sleep 1
        cp $TEMPLATEDIR/rc.local.xen.template $TEMPLATEDIR/rc.local.xen.new
        echo "."
        sleep 1
        cp $TEMPLATEDIR/rc.local.xen.new /etc/rc.local
        echo "."
        sleep 1
        chmod a+x /etc/rc.local
        echo "."
        sleep 1
    fi
Run Code Online (Sandbox Code Playgroud)

而且,在我让人们为所有"睡眠"对我大喊大叫之前,我必须有办法显示脚本的进度,因为运行它的人不会知道他们在做什么(他们只是从核对清单中读取按键)当事情已经完成时检查).

所以,我需要一个漂亮,干净,简单的方法让他们1)看到简单的英语发生了什么(即'完成'或'跳过')和2)可视化脚本仍在运行,即使没有显示任何内容在屏幕上.

最后,我无法对显示进度的方式进行全局更改,有太多代码需要对其执行的所有操作进行更改.但是,如果这是绝对唯一的答案,我想这可能是我必须要做的......有一天......

edu*_*ffy 7

这样的事怎么样?点打印在后台执行的功能中.当yum完成运行时,你可以杀死它.

#!/bin/bash

function dots {
   while : ; do
      echo -n ". "
      sleep 2s
   done
}

dots &
pid=$!

# do real work here
sleep 15s

kill -9 $pid
echo "done!"
Run Code Online (Sandbox Code Playgroud)