Progessbar para script bash


Icono de bash script

Para copias de seguridad, envios de ficheros, envio de alertas,... En definitiva para cualquier tipo de tarea que siga unos pasos que nosotros queremos mostrar por pantalla en formato progressbar.

Se puede configurar para poder elegir los carácteres a mostrar. Los que muestra son un mero ejemplo.

#!/bin/bash

# @param $1 Total de acciones a realizar.
# @param $2 La posición donde se encuentra actualmente la barra dentro del total.
# @param $3 Información visible al final de la barra.
function progressBar(){
    local total=$1
    local charsExtra=40
    let "charsExtra=$charsExtra-${#3}"
    let "status=$2+1"
    let "percentaje=$status*100/$total"
    let "rest=100-$percentaje"
    s=$(printf "%"$percentaje"s" "•")
    r=$(printf "%"$rest"s")
    e=$(printf "%"$charsExtra"s")
    let "percentaje=$status*100/$total"
    echo -ne "\r◘${s// /•}${r}◘ "$percentaje"% [Info] $3${e}"
}

#Ejemplo de uso

declare actions=( "init" "search" "search." "search.." "search..." "done" )

iTop=${#actions[@]}

for (( i=0; i<$iTop; i++ ));do
    progressBar "$iTop" "$i"  "LastAction:${actions[$i]}"
    sleep 1
done