Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo zusammen.

Ich bin gerade leicht am verzweifeln.. zu meinem Problem:

Ich schreibe seit einiger zeit Shell-Skripte und kenne noch nicht alle Möglichkeiten, die ein Shell-Skript mir bietet.

Und zwar geht es um mein aktuelles Projekt.

Ich habe ein Skript geschrieben, dass auf verschiedenen Servern verschiedene Informationen abruft und auf dem Bildschirm ausgibt. Um es genauer zu sagen, es sind bis zu 200 verschiedene Informationspakete, die am Host-Rechner eintreffen.

Um dem User dieses Skripts einen Status zu geben, wie weit es ist hab ich eine einfach echo-Ausgabe pro Informationspaket.

Also sieht meine Ausgabe so aus:


>> /server1/pfad/fcb

>> /server2/pfad/fcb

>> /server3/pfad/fcb

...

>> /server200/pfad/fcb

Da mir dies aber zu viel Platz auf dem Bildschirm verbraucht, möchte ich nun, dass die echo-Ausgaben sich gegenseitig überschreiben. Also, dass sobald das neue Informationspaket eingetroffen ist, die aktuelle Echo-Ausgabe auf dem Bildschirm durch eine neue ersetzt wird, sodass ich nur 1 Zeile für den Status benötige. Jetzt ist die Frage, wie man das realisiert. Ich habe versucht das ganze über ANSI-Escape-Sequenzen zu lösen. Hier mal ein einfaches Beispiel:

#!/bin/sh

for i in Hello Bonjour Welcome Hallo ; do

   echo -en $i

   sleep 2

   echo -en "\e[J" # laut meinem Script sollte dieser ANSI-Code 

                        # die aktuelle Zeile auf dem Bildschirm löschen

done

exit 0

Allerdings hat das nicht funktioniert, wie ich mir das vorgestellt hatte. Der besagte Befehl hatte meines Erachtens nach keine Wirkung gezeigt - auch keine anderweitige Wirkung.

Wo ist mein Fehler - oder wie kann man das lösen?

INFO:: Ich benutze zur Shell-Programmierung ein SUN Solaris 10 System.

Gruß und vorzeitig vielen Danke für die Antworten

starbuck

Geschrieben

Jop hat funktioniert. Hatte vorhin n Fehler drin, sodass er mir die backslash escapes nicht erkannt hat.

Danke noch mal für den Denkanstoss, vic:

Lösung war folgende:

****************


#!/bin/bash

tput civis

terml=`tput lines`

sterml=`expr $terml - 1`

for i in Hello Hallo Welcome Bonjour Salve Servus ; do

   echo -e "\e[${sterml};1H"

   echo -en $i

   echo -e "\e[${sterml};1H"

   sleep 2

   echo -en "\e[J"

done

tput cvvis

exit 0

Gruß

starbuck

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...