Exibindo e atualizando um contador no bash

4

Eu acho que é algo assim: (Fedora14 / bash)

#!/bin/bash

for i in {0..10..1}; do echo -e "$i"'\c'
echo -e "\n\r"
sleep 1
done

Mas isso não funciona. Objetivo: assim, mas sem o "claro":

#!/bin/bash

for i in {0..10..1}; do echo -e "$i"
sleep 1
clear
done

Portanto, um script de contagem que não exclui a tela inteira para gerar um número +1, em vez disso, apenas exclui a linha, onde está a contagem, para que possa existir uma "barra de progresso" completa. / p>     

por LanceBaynes 30.08.2011 / 15:57

2 respostas

8
for i in {0..15}; do echo -ne "$i"'\r'; sleep 1; done; echo 

Você não precisa de ..1 para a largura de etapa 1, que é o padrão.

echo -n 

impede novas linhas.

\r está retornando ao início da linha (sem nova linha - \n ) e melhor do que o meu anteriormente usado '\ b' para retroceder um único caractere, não manual, se você tiver mais de um dígito. Graças a rozcietrzewiacz.

    
por 30.08.2011 / 16:09
1

Você está procurando por algo assim?

for i in {1..10}; do 
  printf '\r%2d' $i
  sleep 1
done
printf '\n'
    
por 30.08.2011 / 16:07