BSDForen.de  

Zurück   BSDForen.de > Geekstuff > Programmieren

Antwort
 
Themen-Optionen Thema bewerten Ansicht
Alt 20.07.2012, 13:51   #1
mark05
Registered User
 
Registrierungsdatum: Nov 2003
Ort: Bergisch Gladbach
Beiträge: 575
bash frage

hi

mal ne frage an die bash gurus

ich habe hier ein paar varablen in der form

TEST_USER=bla
TEST_PASS=blubber
TEST_DB=mysql
OTHER_USER=user
OTHER_PASS=pass
OTHER_DB=nix


nun moechte ich via for schleife diese varablen aus lesen

Code:
for d in 'TEST OTHER' ; do echo "$d_USER" done
leider wirft er nicht den inhalt aus den ich gerne haette
in perl wuerde ich ja ne refrenz bauen um an den inhalt zu kommen
wie geht das in bash ?

holger
mark05 ist offline   Mit Zitat antworten
Alt 20.07.2012, 13:56   #2
laemodost
FreeBSD User
 
Registrierungsdatum: May 2003
Ort: Düsseldorf
Beiträge: 1.719
laemodost eine Nachricht über ICQ schicken
So gehts:
Code:
#!/usr/local/bin/bash TEST_USER=bla TEST_PASS=blubber TEST_DB=mysql OTHER_USER=user OTHER_PASS=pass OTHER_DB=nix for d in TEST OTHER ; do eval echo "\${${d}_USER}" done
laemodost ist offline   Mit Zitat antworten
Alt 20.07.2012, 18:59   #3
gnrp
Registered User
 
Registrierungsdatum: Sep 2009
Ort: Berlin
Beiträge: 36
Neben der genannten Lösung zwei Hinweise: Mit Anführungszeichen wird das 'TEST OTHER' als ein Argument übergeben, du willst es aber als separate Argumente haben, daher die Anführungszeichen bei sowas weglassen.
Und eval solltest du dir unabhängig hiervon angucken zur sh-Programmierung. Man muss mit der Benutzung aufpassen, denn Code wird sehr schnell sehr unübersichtlich, aber es ist enorm mächtig - du kannst damit z.B. sowas wie Funktionspointer realisieren.

Und noch Kleinkariertheit hinterher (da das hier ein BSD-Forum ist): Bitte schreib posix-sh-Code, keinen bash-Code. BSDs leiden schon jetzt unter fehlender Portabilität von vielem Linux-Zeug, v.a. eben bash-Skripte (und auch z.B. die dash wird dir das nicht verzeihen).
Wenn man sich dran gewöhnt hat, kommt man gut ohne die bash-Eigenheiten aus und schreibt dann sehr portablen Code.
gnrp ist offline   Mit Zitat antworten
Alt 20.07.2012, 20:35   #4
mark05
Registered User
 
Registrierungsdatum: Nov 2003
Ort: Bergisch Gladbach
Beiträge: 575
hi

erstmal grundsaetzlich danke das problem ist an sich geloest , jedoch mit dem
ergebinns das ich den ganzen part worum es geht in perl neu bauen werde.

holger
mark05 ist offline   Mit Zitat antworten
Alt 21.07.2012, 08:07   #5
dettus
Bicycle User
 
Benutzerbild von dettus
 
Registrierungsdatum: Aug 2004
Ort: nuernberg
Beiträge: 2.535
Code:
TEST_USER=bla TEST_PASS=blubber TEST_DB=mysql OTHER_USER=user OTHER_PASS=pass OTHER_DB=nix for I in `set` do echo $I | egrep "^(TEST|OTHER)" done
__________________
Computer science is not about using a computer. It is about unleashing its powers.
dettus ist offline   Mit Zitat antworten
Antwort


Dieses Thema betrachten zurzeit 1 Personen. (0 registrierte Benutzer und 1 Gäste)
 
Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus
Gehe zu

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
[8.0 RC1] Hilfe zur Dattenrettung lockdoc FreeBSD - Allgemein 36 27.10.2011 16:21
Allgemeine Frage zum Kernel [Thrash] FreeBSD - Allgemein 7 23.03.2006 09:50
Fehlermeldung in Bash mad-mongo MacOS X & Darwin 4 06.07.2005 22:07
TCSH-Feature in der BASH? berg FreeBSD - Anwendungen und Ports 8 01.08.2004 14:15
Bash zur default shell machen Sonic_Traveler FreeBSD - Anwendungen und Ports 9 24.09.2003 20:00


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:03 Uhr.


Powered by vBulletin (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.