分享

progressbar.sh

 魔奇工作室 2014-05-07
#! /bin/sh

MAXIMUM_VALUE=100
LENGTH=80
DISPLAY_PATTERN="="
INDICATOR=">"
BLANK_PATTERN=" "

function progressbar
{
    VALUE=$1
    if (( VALUE > MAXIMUM_VALUE ))
    then
        return 1
    fi
    BAR_LENGTH=`expr ${LENGTH} - 9`
    CURRENT_BAR_LENGTH=0
    if (( VALUE == 0 ))
    then
        CURRENT_BAR_LENGTH=0
    else
        if (( VALUE == MAXIMUM_VALUE ))
        then
            CURRENT_BAR_LENGTH=${BAR_LENGTH}
        else
            CURRENT_BAR_LENGTH=`echo "scale=0; ${VALUE} * ${BAR_LENGTH} / ${MAXIMUM_VALUE}" | bc`
        fi
    fi
    PASTY=""
    for (( PG = 1; PG <= ${BAR_LENGTH}; PG++ ))
    do
        if (( PG == CURRENT_BAR_LENGTH && VALUE != MAXIMUM_VALUE ))
        then
            PASTY="${PASTY}${INDICATOR}"
            continue
        fi
        if (( PG <= CURRENT_BAR_LENGTH ))
        then
            PASTY="${PASTY}${DISPLAY_PATTERN}"
            continue
        fi
        PASTY="${PASTY}${BLANK_PATTERN}"
    done
    if [[ `echo ${PASTY} | tr -d [:blank:]`x == ""x ]]
    then
        PASTY="|"
    fi
    printf "\r[%-${BAR_LENGTH}s] %.1f%%  " ${PASTY} $(echo "scale=3; ${VALUE} / ${MAXIMUM_VALUE} * 100" | bc)
}

#################################### USAGE #####################################
MAXIMUM_VALUE=1101
LENGTH=100
DISPLAY_PATTERN=")"
INDICATOR=">"
BLANK_PATTERN="-"
for (( CV = 1; CV <= ${MAXIMUM_VALUE}; CV++ ))
do
    progressbar ${CV}
    #sleep 0.03
done
echo

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多