Adiciona um display para permitir que o usuário espere no bash

2

Eu estou procurando um pedaço de código bem estúpido para o bash que mostrará uma espécie de exibição "aguarde", com os caracteres: - \ | /

O primeiro problema é que eu não sei o nome dessa coisa, então é um pouco difícil de encontrar, e a outra é você poderia por favor fornecer um scriptlet por favor?

Obrigado antecipadamente,

Olivier

    
por Olivier M. 25.12.2013 / 11:16

4 respostas

2

Muito obrigado pela valiosa ajuda. Eu dei uma olhada em todos os pedaços de código, e todos parecem muito longos para o que estou fazendo.

Portanto, com base nisso, refiz apenas um pequeno código que estou compartilhando com você.

#! /bin/bash
state=1
delay=0.5
printf "-"
sleep $delay

while [ 1 ]
do
        printf "\b"
        case $state in
                0) printf "-";;
                1) printf "\";;
                2) printf "|";;
                3) printf "/";;
        esac
        if [ $state -eq 3 ]
        then
                state=0;
        else
                state=$((state+1));
        fi
        sleep $delay
done

Claro, isso pode funcionar como um código independente, mas retire a linha de base e você pode inseri-la facilmente em um script e, eventualmente, reduzi-la um pouco mais. A única coisa é sobre a condição, que agora está correndo para sempre, então tem que sair sua própria condição para parar.

Espero que você ache útil. ; -)

    
por 26.12.2013 / 05:12
1

Eles são chamados de 'spinners'. O Linux Journal tem um artigo com código de exemplo.

    
por 25.12.2013 / 11:19
0

Eles também são chamados de 'Throbbers'. Para uma implementação mais explicações sobre como usá-la, veja link (disclaimer: eu não testei isso sozinho, mas eu esqueci isso e parece razoável)

    
por 25.12.2013 / 19:37
0

Você poderia tentar o código abaixo para "esperar por favor" barra de processo / spinners.

 #!/bin/bash
 echo -e "Please wait ..."
 while true;
 do
 echo -ne '-\r'
 sleep .2
 echo -ne '\\r'
 sleep .2
 echo -ne '|\r'
 sleep .2
 echo -ne '/''\r'
 sleep .2
 echo -ne '-\r'
 done

ou

tente

 #!/bin/bash
 echo -n "Please wait..."
 while true
 do
      echo -n "."
      sleep .2
 done

Está funcionando para mim ...

    
por 27.12.2013 / 12:36