Como posso adaptar esta função da barra de progresso do bash para o AIX ksh88? [fechadas]

0

Eu tenho um script bash para a barra de progresso e uso-o quando trabalho no bash:

#!/bin/bash

prog() {
    local w=80 p=$1;  shift
    printf -v pt "%*s" "$(( $p*$w/100 ))" "";pt=${pt// /.};
    printf "\r\e[K|%-*s| %3d %% %s" "$w" "$pt" "$p" "$*";
}
# test loop
for x in {1..100} ; do
    prog "$x" traitement en cours...
    #sleep .1   # do some work here
#traitement
done ; echo

Mas agora estou usando o AIX KSH88 e estou tentando converter esse script, mas encontro vários erros. Like:
pt=${pt// /.} Substituição ruim de pt=$(printf "%*s" "$(( 80*20/100 ))" "") Eu recebo: printf: conversão ruim

    
por user322130 21.11.2018 / 16:28

1 resposta

1

Tente:

function prog {
  typeset w=80 p="$1" pt= IFS=" "
  typeset pc="$((p * w / 100))"
  shift
  while ((pc)); do pt=$pt.; ((pc-=1)); done
  printf "\r[K|%-${w}s| %3d%% %s" "$pt" "$p" "$*"
}
# test loop
x=1; while ((x <= 100)); do
  prog "$x" traitement en cours...
  sleep 1   # do some work here
  ((x+=1))
done
echo
    
por 21.11.2018 / 19:07

Tags