[gelöst] Variable innerhalb einer runden Klammer ändern

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
vobie
Beiträge: 195
Registriert: 29.08.2003 21:14:50

[gelöst] Variable innerhalb einer runden Klammer ändern

Beitrag von vobie » 11.04.2010 14:17:11

Hi,
ich habe da ein kleines Problem und hoffe das mir jemand helfen kann.
Ich versuche gerade ein Shell-Script zu schreiben das Befehle und Meldungen auf einem remote Rechner ausführen und anzeigen soll.

Die Syntax ist folgende:

program --host=192.168.xxx.xxx --message="Window(hallo)"

Um die ganze Sache zu verkürzen habe ich den ersten Teil bis --message= in eine Variable gepackt.
MESSAGE="program --host=192.168.xxx.xxx --message="
AW="Window(hallo)"

Wenn ich nun im script $MESSAGE$AW ausführe klappt das wunderbar.
Nun möchte ich aber das (hallo) durch eine Variable, z.B. ($V1) ersetzen und diese im Script
ändern.
AW="Window($V1)"

wenn ich also
V1=hallo
$MESSAGE$AW
sleep3
V1=Welt
$MESSAGE$AW
ausführe klappt das nicht weil in die Klammer nichts eingesetzt wird.
program --host=192.168.xxx.xxx '--message=Window()'

Ich hoffe das mir jemand einen Tipp geben kann

danke
vobie
Zuletzt geändert von vobie am 11.04.2010 18:26:44, insgesamt 1-mal geändert.
Es gibt keine dummen Fragen. Aber leider viele dumme Antworten.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Shell-Script Variable innerhalb einer runden Klammer änd

Beitrag von gms » 11.04.2010 15:27:20

Das sind auch Variablen und keine Platzhalter, daher zum Zeitpunkt der Ausführung von

Code: Alles auswählen

AW="Window($V1)"
sollte in V1 was drinstehen, oder es wird nachher auch nichts in der Variablen AW zwischen den Klammern stehen

Gruß
gms

vobie
Beiträge: 195
Registriert: 29.08.2003 21:14:50

Re: Shell-Script Variable innerhalb einer runden Klammer änd

Beitrag von vobie » 11.04.2010 18:03:19

Aha,

aber mit V1=Welt setze ich doch die Variable V1 mit dem Wert Welt ?

gruß
vobie
Es gibt keine dummen Fragen. Aber leider viele dumme Antworten.

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Shell-Script Variable innerhalb einer runden Klammer änd

Beitrag von Meillo » 11.04.2010 18:10:33

Einfacher ist's wenn du die Variablen nicht verschachtelst. Zum Beispiel so:

Code: Alles auswählen

cmd="program --host=192.168.xxx.xxx --message="
msg="Window"

arg="hallo"
$cmd"$msg($arg)"
sleep 3

arg=Welt
$cmd"$msg($arg)"
btw: In der Shell sollte man selbstdefinierte Variablenbezeichner aus Kleinbuchstaben wählen um Kollisionen zu vermeiden. Die Variablenbezeichner in Großbuchstaben sind für die vordefinierten Variablen der Shell reserviert.
Use ed once in a while!

vobie
Beiträge: 195
Registriert: 29.08.2003 21:14:50

Re: Shell-Script Variable innerhalb einer runden Klammer änd

Beitrag von vobie » 11.04.2010 18:25:16

Meillo hat geschrieben:Einfacher ist's wenn du die Variablen nicht verschachtelst. Zum Beispiel so:

Code: Alles auswählen

cmd="program --host=192.168.xxx.xxx --message="
msg="Window"

arg="hallo"
$cmd"$msg($arg)"
sleep 3

arg=Welt
$cmd"$msg($arg)"
btw: In der Shell sollte man selbstdefinierte Variablenbezeichner aus Kleinbuchstaben wählen um Kollisionen zu vermeiden. Die Variablenbezeichner in Großbuchstaben sind für die vordefinierten Variablen der Shell reserviert.
vielen Dank, so geht's

gruß
vobie
Es gibt keine dummen Fragen. Aber leider viele dumme Antworten.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Shell-Script Variable innerhalb einer runden Klammer änd

Beitrag von gms » 11.04.2010 18:35:10

vobie hat geschrieben:Aha,

aber mit V1=Welt setze ich doch die Variable V1 mit dem Wert Welt ?
ja, aber anscheinend wird AW schon vorher gesetzt, also hat das keinen Einfluß auf den Wert von AW

jedenfalls hier nicht:
vobie hat geschrieben: wenn ich also
V1=hallo
$MESSAGE$AW
sleep3
V1=Welt
$MESSAGE$AW

Antworten