Was mache ich bloss falsch? Probleme mit tput?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Simmel
Beiträge: 698
Registriert: 08.03.2004 14:43:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Düsseldorf
Kontaktdaten:

Was mache ich bloss falsch? Probleme mit tput?

Beitrag von Simmel » 04.09.2008 17:09:31

Hi Leute,

ich verzweifel schon fast den ganzen Tag und hoffe jemand kann mich erleuchten, möglicherweise habe ich auch einfach einen Bug gefunden?

Ma waiss ett nisch!? Hier mein Bash-Schnipsel:

Code: Alles auswählen

#!/bin/bash

#Bildschirm loeschen und farblich gestalten
SCREEN=`tput clear ; tput setaf 4 ; tput setab 7`

#Rahmen aufbauen
OBENUNTEN="+------------------------------------------------------------------------------+"

RAHMEN=`tput cup 1 0 ; echo $OBENUNTEN ; for (( z=1 ; z<21 ; z=z+1 )) ; do printf "| %77s|" " " ; done ; tput cup 22 0 ; echo $OBENUNTEN`

$SCREEN
$RAHMEN
Ich wollte mir mit tput und printf ein kleines "fancy" Menu bauen, allerdings will der Saftsack nicht so wie ich will.

Gebe ich diese Befehle einfach in der Konsole ein, klappt alles prima:

Code: Alles auswählen

tput clear ; tput setaf 4 ; tput setab 7
Bildschirm wird gelöscht, Farben werden geändert, supi! Packe ich das aber in eine Variable, so wie oben, dann geht dieser Befehl zwar noch wirft aber eine Fehlermeldung aus. Gut die Fehlermeldung ": command not found" nach /dev/null leiten, damit könnte ich ja noch mit leben ^^)

Die zweite Knüllerline will leider aber gar nicht mehr. Gebe ich diese in exakt dieser Form einfach in der Konsole ein, klappts noch super, zack habe ich meinen Rahmen.

Code: Alles auswählen

tput cup 1 0 ; echo "+------------------------------------------------------------------------------+" ; for (( z=1 ; z<21 ; z=z+1 )) ; do printf "| %77s|" " " ; done ; tput cup 22 0 ; echo "+------------------------------------------------------------------------------+"
Packe ich diese Zeile jedoch in eine Variable wie oben, geht gar nix mehr. Die Sau bricht mit fast der gleichen Fehlermeldung ab wie oben.

Code: Alles auswählen

"+------------------------------------------------------------------------------+"
: command not found
Grml,

was mache ich hier falsch bzw. mache ich was falsch oder ist das einfach nur ein Bug?

Habe schon so ziemlich alles versucht was ich kann, aber ich komme hier einfach nicht weiter. Das fuchst mich einfach :lol:

Jemand eine Idee?

Danke,
Simmel
you've got to know how far to go in going too far

perl -le'print+(split//,"schaeuble")[6,8,7,3,5,0..2,4]'

http://creativecommons.org/licenses/by-nc-sa/2.0/

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Was mache ich bloss falsch? Probleme mit tput?

Beitrag von rendegast » 04.09.2008 20:17:09

Code: Alles auswählen

SCREEN=`...`
RAHMEN=`...`
die "`" fuehren zur Ausführung der Kommandos schon beim Setzen der Variablen.
(Wäre wie 'SCREEN=$(...)'.)
Dadurch steht IN der Variablen $SCREEN nix mehr, und in $RAHMEN steht nur noch das "+--...--+"', das bei

Code: Alles auswählen

$RAHMEN
als Kommando interpretiert wird.

Wolltest Du statt ` vielleicht ' oder " verwenden ? Das könnte bei den Klammern und " jedoch Interpretationsprobleme geben.
Besser wären Funktionen:

Code: Alles auswählen

#!/bin/bash

#Bildschirm loeschen und farblich gestalten
SCREEN () {
   tput clear ; tput setaf 4 ; tput setab 7
   }

#Rahmen aufbauen
OBENUNTEN="+------------------------------------------------------------------------------+"

RAHMEN () {
   tput cup 1 0 ; echo $OBENUNTEN ; for (( z=1 ; z<21 ; z=z+1 )) ; do printf "| %77s|" " " ; done ; tput cup 22 0 ; echo $OBENUNTEN
   }

SCREEN
RAHMEN

Bei mir kommen versetzte "||". Fehlt noch 'new-line'?

Code: Alles auswählen

 do printf "| %77s|\n" "$z" ;
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
Simmel
Beiträge: 698
Registriert: 08.03.2004 14:43:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Düsseldorf
Kontaktdaten:

Re: Was mache ich bloss falsch? Probleme mit tput?

Beitrag von Simmel » 04.09.2008 22:52:45

rendegast hat geschrieben: Besser wären Funktionen
Natürlich, besser wäre das :hail:

Danke! Das ich da nicht gleich selbst drauf gekommen bin ich Trottel?

Thx a lot,
Simmel
you've got to know how far to go in going too far

perl -le'print+(split//,"schaeuble")[6,8,7,3,5,0..2,4]'

http://creativecommons.org/licenses/by-nc-sa/2.0/

Antworten