bash Variable per Script auslesen

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

bash Variable per Script auslesen

Beitragvon Christopy » Sonntag 3. Oktober 2004, 23:18

Ich möchte ein einem Script einen Variablennamen übergeben. Das Scripst soll einfach nur den Variablenwert ausgeben. Ich hatte an folgendes gedacht:

Code: Alles auswählen

#! /bin/bash
echo $1

Aber wie übergebe ich nun den Variablennamen beim Aufruf? Oder hat jemand evt. eine bessere Lösung? Kenn mich da leider nicht aus :(
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Montag 4. Oktober 2004, 00:15

Hi Christopy,

hab mal etwas rumprobiert ;)

Code: Alles auswählen

#!/bin/bash
expr `set|grep $1=` : ".*=\(.*\)"


das ganze holt mit set|grep $1= das Name/Wert-Paar das mit dem Namen in $1 beginnt und filtert mit expr und dem regulären Ausdruck den Wert heraus


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Montag 4. Oktober 2004, 05:26

Guten Morgen!

Meinst Du vielleicht so etwas:
script1.sh

Code: Alles auswählen

#!/bin/bash
wert="GutenMorgen"
. script2.sh $wert

script2.sh

Code: Alles auswählen

#!/bin/bash
echo $1


Gruß, mawe
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

Beitragvon Christopy » Montag 4. Oktober 2004, 09:06

Dank euch!

@Dookie
Ups. Das verstehe ich noch nicht wirklich. Muss ich nochmal in Ruhe überdenken... Danke auf jeden Fall!

@mawe
Nicht ganz. So wird script2 ja schon mit "GutenMorgen" aufgerufen. script 2 soll aber eigentlich "GutenMorgen" ermitteln.

Nach langen Versuchen hab ich auch noch was gefunden:
vars.sh:

Code: Alles auswählen

#!/bin/bash
eval echo $1


Das kann man nun mit ./vars.sh \$VARIABLENNAME
oder direkt aus Java mit

Code: Alles auswählen

String[] cmd = { "./vars.sh", "$VARIABLENNAME" };
Process p = Runtime.getRuntime().exec( cmd );

aufrufen. (Warum ich dort das Dollarzeichen nicht escapen muss ist mir ein Rätsel :roll: )

Wenn jemand noch andere Idee hat, wie ich zur Laufzeit aus Java an Unix-Umgebungsvariablen rankomme (die sich zur Laufzeit auch ändern können) freue ich mich über Hilfe.
Benutzeravatar
seli
User
Beiträge: 12
Registriert: Montag 4. Oktober 2004, 22:58
Kontaktdaten:

Beitragvon seli » Dienstag 5. Oktober 2004, 08:41

Ich kapier nicht so ganz, was du tun möchtest.
Du schreibst von einem Script, und kommst dann mit Java Code, ähm ich kann dir nicht ganz folgen...

PS: Bei Java musst du $ nicht escapen, weil zB in einem Shell script variablen $foo heissen, bei Java (und Python usw) heissen sie foo
:wq

Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot]