[linux-l] Bash-Frage

Steffen Dettmer steffen at dett.de
Mo Okt 14 11:09:03 CEST 2002


* Lutz Meinert wrote on Sat, Oct 12, 2002 at 18:58 +0200:
> Am Sam, 2002-10-12 um 16.38 schrieb Steffen Dettmer:
> > [at this ident level]
> Nö, nicht der ganze Text steht in Variablen. Nur die während des
> Programmverlaufs dynamisch erzeugten Information wie:
> "Sie haben \"$gvPartition\" gewählt. Wenn Sie fortfahren wird alles "

Ja, das finde ich "suboptimal"...

> Die eval-Lösung hatte mir kurz zuvor schon freundlicherweise Martin
> Finkbeiner zukommen lassen. Finde ich klasse, da ich im Großen und
> GAnzen meinen kompletten bisherigen Code behalten kann. 

> > Würde aber die Printf-Version vorziehen.

Ich halte dies trozdem für die "uneleganteste" hier. Ist die
langsamste und am fummeligsten (hat man viele Dateien und weiß
ich was). 

> Gute Idee. Ich verwende allerdings lieber eine Funktion, die ich auf
> beliebige Textmeldungen anwenden kann:
> 
> function GF_MsgBox
> {
>   dialog --title "CORP" --msgbox \
>   "$(eval echo \"$(cat $gvMsgDir/$1)\")" 25 80
> }

brauchst Du zwei neue Shellprozesse, nur um einen einfachen Text
zu bauen, der für den dritten ist. Natürlich ist die Leistung
hier da, klar, danach wird ja eh auf den Benutzer gewartet, aber
ich finde es nicht sonderlich "schick" Leistung so zu verheizen.
Hab auch mal ein so aufgebautes Script, was ein bißchen gewachsen
ist, und inzwischen kotzig langsam ist (60 mal langsamer ist ja
egal, wenn es insgesammt 1 Sekunde dauert, die man wartet. Wenn
es aber 60 sind, und man es auch in einer schaffen würde, ist's
ärgerlich :)).

> > LOGGED_AS_MSG='Sie sind als _LOGNAME_ angemedelt';
> > dialog  --msgbox "${LOGGED_AS_MSG//_LOGNAME_/$LOGNAME}"
> > 
> > Nicht mehr lesbar, aber schnell (hier wird _LOGNAME_ als token

Wenn das mit einem Kommentar in Deiner Funktion steht, ist's ja
wieder akzeptabel, BTW. Du kannst ja auch:
"${LOGGED_AS_MSG//\$LOGNAME/$LOGNAME}"

machen, dann wird $LOGNAME so ersetzt, wie es auch eval machen
würde - nur eben schnell und ohne Platte klappern.

> Oh ja, das war reichlich. printf kannte ich noch nicht, riecht auch 
> sehr nach C. 

Na ja, libc. Gibt's auch bei Perl und eben als Bash-buildin. Nur
leider braucht man dann hier wohl backticks. Geht vielleicht auch
schöner, weiß nicht.

> Auch die LOGNAME-Substitution ist sehr clever. Vielleicht
> mache ich später mal eine richtige GUI-Version. Dann werde ich mich wohl
> auch mal mit C++ beschäftigen. 

Nicht dafür. Dann lieber Perl::Tk oder Perl::Qt oder vielleicht
gibt's auch ein Perl::Dialog. Aber nicht C++, das paßt hier wohl
nicht wirklich...

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.




Mehr Informationen über die Mailingliste linux-l