Seite 1 von 1

bash Variable per Script auslesen

Verfasst: Sonntag 3. Oktober 2004, 23:18
von Christopy
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 :(

Verfasst: Montag 4. Oktober 2004, 00:15
von Dookie
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

Verfasst: Montag 4. Oktober 2004, 05:26
von mawe
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

Verfasst: Montag 4. Oktober 2004, 09:06
von Christopy
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.

Verfasst: Dienstag 5. Oktober 2004, 08:41
von seli
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