Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
(?Vieleicht?) kleines Scriptproblem ...

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
eq
Gast





BeitragVerfasst am: 22. Mai 2002 14:08   Titel: (?Vieleicht?) kleines Scriptproblem ...

Hi .. ich habe ein Problem - eigentlich recht simpel:

PARAM="`who`"
echo $PARAM

wenn ich who in der Konsole eingebe, dann kommt das sauber, aber mit diesen Befehlen bekomme ich alle Zeilen hintereinandergeschrieben ... es schaut wirr aus.

ich möchte anschließend ein
dialog --infobox $PARAM 0 0
aufrufen, aber leider schaut das nicht sehr sauber aus

danke schon mal
 

Andreas B.
Gast





BeitragVerfasst am: 22. Mai 2002 15:12   Titel: Re: (?Vieleicht?) kleines Scriptproblem ...

1. die substitution ueber die singlequotes wuerde ich ueber
: PARAM=$( who ) :
erledigen das verhindert schon mal Fehlinterpretationen und macht den code wesentlich lesbarer

###############################
#!/bin/sh
PARAM=$( who )
echo $PARAM
sleep 2
dialog --infobox "$PARAM" 20 50
###############################

80*25
<- fuehre dort die dialog script am besten aus also in der textconsole nicht
in der console unter X
 

eq
Gast





BeitragVerfasst am: 22. Mai 2002 16:08   Titel: Re: (?Vieleicht?) kleines Scriptproblem ...

hi..
erstmal danke ... leider ist das Problem nicht gelöst.
er schreibt nach wie vor hintereinander (läßt ein leerzeichen zwischen den wörtern frei)

Leider
andere Vorschläge ?

Danke
 

Jochen
Gast





BeitragVerfasst am: 23. Mai 2002 8:09   Titel: Re: (?Vieleicht?) kleines Scriptproblem ...

Jau, einen habe ich noch.

Und zwar ist Dein Problem mehrteilig...

Die Shell trennt die einzelnen Wörter einer Eingabe nach den Feldtrennern auf, die in der Variablen IFS (internal Field Separator) aufgeführt sind. Per Default sind das Blank, Tab und Newline. Bei der Ausgabe werden die Wörter dann in Folge ausgegeben, mit dem Trennzeichen, welches an erster Stelle in IFS steht, typischerweise Blank also. Damit wird das Newline zu einem Blank, und der schöne Umbruch ist futsch. Das kannst Du aber verhindern, in dem Du um $PARAM Anführungszeichen setzt. Beispiel:

#!/bin/sh
PARAM=$( who )
echo "$PARAM"

Zweiter Teil des Problems: "dialog" unterdrückt die Newlines ebenfalls in seiner Eingabe (ist aber nicht der gleiche Mechanismus wie in der Shell)... Aber wenn man ihm ein "\n" statt eines echten Newlines gibt, macht er den Zeilenumbruch korrekt. Mit ein bisschen sed/tr geht dann alles gut:
code:

#!/bin/sh

function txt2ib
{
echo "$*" | sed 's/$/\\n/' | tr -d '\012'
}

PARAM=$( who )
dialog --infobox "$(txt2ib "$PARAM")" 20 50


Die Shell-Funktion txt2ib fügt in ihrem Argument an jedem zeileende ein "\n" ein und löscht danach das echte Newline-Zeichen. Und mit $() wird diese Ausgabe als Optionsargument zu --infobox dem dialog mitgegeben. Und damit die Shell da nicht schon wieder drangeht, kommen noch mal Anführungszeichen um das ganze. Voilà!

Viel Spass noch beim Basteln!

Jochen
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy