[linux-l] Bash-Frage

Lutz Meinert lutz.meinert at madvedge.de
Sa Okt 12 09:19:42 CEST 2002


Am Sam, 2002-10-12 um 03.07 schrieb Sven Guckes:

> 
> > FRAGE: Wie kann ich echo aus einer Datei einen Text mit Variablen
> > übergeben, wobei diese auf der Konsole aufgelöst werden?
> 
> wie lautet denn dein eigentliches problem?
> mir scheint du verrennst dich da...

Gut, dann nun die ganze Story:

Ich nehm gerade mein Bash-Programm Corp (Verschlüsselung von
Festplatten(partitionen und Files) völlig auseinander, um sämtliche
Bildschirmausgaben optisch ein wenig ansprechender zu gestalten. Hierzu
verwende ich das tool dialog. Dabei fiel mir auf, dass es nicht
sonderlich geschickt ist, sämtliche Bildschirmmeldungen direkt in den
Programm-Code zu schreiben, da für jede weitere Sprachversion, der
komplette Code kopiert und entspechend angepasst werden müsste.
Cleverer ist es, die Bildschirmmeldungen für die jeweilige Sprache als
einzelne Text-Files in seperaten Verzeichnissen zu halten. Der Pfad zum
jeweiligen "Sprach-Verzeichnis" erfolgt über eine Variable, die wiederum
über das Auslesen von $LANG definiert wird.
Auf die Weise muss ich nur eine Version des Programms schreiben, egal
für wie viele Sprachen auch immer. Ausserdem muss auch nicht mehr den
Quelltext mühsam durchforschen, wo nun welcher Text hingehört.
Dazu muss ich aber den Bash-Scripten eben diese erwähnten Text-Files
übergeben. Darin stehen aber auch einige Variablen, z.B. für die Wahl
der Partition, des Mount-Verzeichnisses oder Mount-Aliases. Diese kann
ich nicht vorher wissen und Sie deshalb nur als Variablenwert auslesen
und anzeigen lassen.

# Beispiel 1 (alt, redundant, dumm):
# dialog --clear --title "CORP" --msgbox \
"Sie sind als \"$LOGNAME\" angemedelt" 25 80

# Beispiel 2 (neu, nicht redundant, eigentlich clever, aber Variablen 
# vom Text-File werden nicht aufgelöst
dialog --clear --title "CORP" --msgbox "$(cat $gvMsgDir/login)" 25 80

> ansonsten:  wenn du willst, dass jene datei
> wie ein shell script ausgefuehrt wird, nun,
> dass lasse dieses script auch ausfuehren...

Klappt leider aus oben gennanten Gründen nicht. So hatte ich es ja
bisher, bei dem jeder Bildschirm-Meldungstext direkt im Code stand.
> 
> Sven

Ich hoffe, ich hab' mein Problem jetzt anschaulich dargestellt

Vielleicht hat da ja eine(r) einen guten Tip...

Ciao Lutz






Mehr Informationen über die Mailingliste linux-l