如何在bash

时间:2018-01-18 02:02:58

标签: bash

我有一段代码用于进度条只是为了看起来。如何在bash中显示两个进度条并以不同的速度加载到屏幕上?这是我对第一个进度条的代码:

#!/bin/bash
echo -ne '[###                   (15%)\r'
sleep 1
echo -ne '[########              (42%)\r'
sleep 1
echo -ne '[#############         (66%)\r'
sleep 1
echo -ne '[####################] (100%)\r'
sleep 1
echo '\n'

2 个答案:

答案 0 :(得分:0)

快速解决方案;可能会更好地计算标准:

#!/bin/bash

pgbar(){
    progress1=$1
    progress2=$2
    if [ $progress1 -lt 25 ] ; then
        bar1='[###           (15%)'
    elif [ $progress1 -lt 50 ] ; then
        bar1='[######        (42%)'
    elif [ $progress1 -lt 99 ] ; then
        bar1='[#########      66%)'
    else
        bar1='[#############](100%)'
    fi
    if [ $progress2 -lt 25 ] ; then
        bar2='[###           (15%)'
    elif [ $progress2 -lt 50 ] ; then
        bar2='[######        (42%)'
    elif [ $progress2 -lt 99 ] ; then
        bar2='[#########      66%)'
    else
        bar2='[#############](100%)'
    fi
    echo -ne "$bar1" "$bar2" "\r"
}

pgbar 15 15
sleep 1
pgbar 15 50
sleep 1
pgbar 15 75
sleep 1
pgbar 55 75
sleep 1
pgbar 85 75
sleep 1
pgbar 100 75
sleep 1
pgbar 100 100
sleep 1
echo ''

echo -ne "$bar1" "$bar2" "\r"替换为

echo  "$bar1"  
echo  "$bar2" 
tput cuu1
tput cuu1

如果你想要彼此之下的条形。

答案 1 :(得分:0)

我不确定这是否是您想要的,但请尝试以下方法:

#!/bin/bash

echo -ne '[###                   (15%)\n'
sleep 1
echo -ne '[********              (42%)\r'
tput cuu 1
sleep 1
echo -ne '[#############         (66%)\n'
sleep 1
echo -ne '[******************    (90%)\r'
tput cuu 1
sleep 1
echo -ne '[####################] (100%)\n'
sleep 1
echo -ne '[********************] (100%)\r'
echo -e '\n'

要进行更精细的控制,请尝试使用ncurses库。