Flashig grafik i Terminalen (progress bar)

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • International user
  • 2004-03-03 16:55

Här är ett litet exempel på hur man kan 'flasha' med cool grafik i Terminalen.
En 'progress bar', typ...

#/bin/sh

# Skriptet skriver ut en 'progress-bar' under tiden som 
# ett kommando kontrollerar något mot 'last result' $?
# Det kan vara en fil som man väntar på ska stänga eller
# en process som ska startas/avslutas.
# Ett oerhört grafiskt lyft för Terminalen 

# Variabler för testresultat och räknaren
testresultat=1
counter=0

# Skriver ut 'Test'. Hela grejen med denna 'progress bar'
# är '-n' efter echo. Det innebär att echo printer utan
# en avslutande radbrytning.
echo -n "Test"


# Under tiden som räknaren ($counter) är mindre är 10 OCH
# testresultat är lika med 1 (typ error) ska vi utföra
# allt mellan 'do' och 'done'.
# Detta innebär att detta test utförs max 10 sekunder, vi
# har sleep 10 i while-satsen, eller till vår test lyckas ($?=0).
while (test $counter -lt 10 && test $testresultat -eq 1)
do


# Här ska 'testet' utföras...
# T.ex. kolla om en fil finns:

# ls $HOME/filen
# testresultat=$?

# Finns inte filen blir $testresultat 1 och vi är kvar så
# i 'loopen' (så länge $counter < 10).
# Det går att köra detta script utan
# test-koden för att se hur det fungerar.

# För varje 'misslyckat' försök att utföra testet skrivs en punkt
# '.' ut utan radbrytning.
echo -n .

# Vi väntar 1 sekund innan nästa försök i 'loopen'.
sleep 1


# Enkel räknare av typen n=n+1
counter=$((counter+1))
done

# Skriver ut en tom sträng för att få en ny rad (inget '-n' här).
echo ""

# Här hanterar vi resultatet av 'testet'.
if ( test $counter -eq 10 ) then

echo "Nej, vi behöver mer tid (eller något gick fel)..."
else
echo "Vi lyckades inom 10 sekunder..."
fi

kul! får man leka med när man får tid.

På tal om sånt, några tips till formatering av output?
typ (tänk grön färg på 'OK' etc):

Doing something                          [ OK ]
something else                             [ ERROR ]
  • Medlem
  • Härnösand
  • 2004-03-03 19:23

OK!

Hur gör man? Unix-newbie

Kopiera in det Wire skrev till en textfil. Spara den som t.ex. superduper.sh i din hemmamapp.

Starta terminalen och skriv chmod +x ~/superduper.sh

Skriv ./superduper.sh och se vad som händer (har inte testat själv)

Ciryon

  • Medlem
  • Härnösand
  • 2004-03-04 13:09

OK.

Tack, ska testa det när jag kommer hem ikväll.

1
Bevaka tråden