Mehrere Variabeln die das selbe machen mit einer Zeile?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ManfredG
Beiträge: 112
Registriert: 12.08.2004 17:38:14

Mehrere Variabeln die das selbe machen mit einer Zeile?

Beitrag von ManfredG » 14.08.2004 14:00:06

Hallo,
die Programmierer haben dafür sicherlich einen prima Namen.
Ich beschreibe es einmal so:

Wie kann ich so etwas mit einer Zeile realisieren?

var1=`mach etwas`
var2=`mach etwas`
var3=`mach etwas`
var4=`mach etwas`
var5=`mach etwas`
var6=`mach etwas`
var7=`mach etwas`
var8=`mach etwas`
var9=`mach etwas`
var10=`mach etwas`

Diese ganze Geschichte mit den Klammern und Anführungszeichen sind wirklich gar nicht so einfach zu kapieren. Eine umfangreiche FAQ Seite würde mir wahrscheinlich auch öfters mal weiterhelfen können. Leider habe ich soetwas bis jetzt noch nicht gefunden.

Liebe Grüße und danke für Euere Hilfe
Manfred

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 14.08.2004 14:21:57

um ganz ehrlich zu sein, versteh ich deine Frage nicht!

was meinst du mit "in einer Zeile"?
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

basman
Beiträge: 102
Registriert: 22.06.2004 08:48:14
Wohnort: Winterthur

Beitrag von basman » 14.08.2004 14:29:42

Ich hoffe, du meintest shell programmierung (bash):

Code: Alles auswählen

for i in $(seq 1 10)
do
   eval "var$i=\`mach etwas\`"
done
In einer Zeile kannst du es haben, wenn du die Zeilen mit ; getrennt hintereinanderhängst.

ManfredG
Beiträge: 112
Registriert: 12.08.2004 17:38:14

Beitrag von ManfredG » 14.08.2004 15:03:39

Hallo,
danke für Euere Hilfe.

Wenn ich quasi ein päckchen habe funktioniert das super mit:

for i in $(seq 1 10)
do
eval "var$i=\`mach etwas\`"
done

Jetzt brauche ich aber noch ein weiteres.

So geht es leider nicht (;-((

for i in $(seq 1 10)
do
eval "tiere$i=\`mach etwas\`"
done

Auch das geht nicht:

for tir in $(seq 1 10)
do
eval "tiere$tir=\`mach etwas\`"
done

Was wäre da die Lösung?

In meiner ersten Zeile des Scriptes steht
#!/bin/sh

Ich denke daran wird es wohl kaum liegen.

Danke und liebe Grüße
Manfred

basman
Beiträge: 102
Registriert: 22.06.2004 08:48:14
Wohnort: Winterthur

Beitrag von basman » 14.08.2004 20:48:41

Sorry, ich verstehe nicht, was Du mit Päckchen meinst. Die for-Schleife? Und "es geht nicht" sagt mir auch nichts. Schlägt der Aufruf des Scripts fehl oder stimmt das Ergebnis nicht?

Tip: zum Debuggen von Shell-Scripten hilft bisweilen

Code: Alles auswählen

sh -x scriptdatei.sh

Burns
Beiträge: 97
Registriert: 10.07.2004 15:10:46
Wohnort: Aachen
Kontaktdaten:

Beitrag von Burns » 18.08.2004 00:44:44

ManfredG hat geschrieben: for tir in $(seq 1 10)
do
eval "tiere$tir=\`mach etwas\`"
done

Code: Alles auswählen

for tir in $(seq 1 10)
do
   eval "tiere${tir}=\`mach etwas\`"
done
Geschweifte Klammern um den Variablennamen, klappt das?

ManfredG
Beiträge: 112
Registriert: 12.08.2004 17:38:14

Beitrag von ManfredG » 18.08.2004 02:38:13

Hallo Burns,
nein, leider funktioniert das auch nicht.

Ich bekomme dann in der erzeugten Datei immer solche Sachen:

Code: Alles auswählen

ARRAY(0x80f57ac)
Hast Du noch eine Idee?

Liebe Grüße
Manfred

basman
Beiträge: 102
Registriert: 22.06.2004 08:48:14
Wohnort: Winterthur

Beitrag von basman » 18.08.2004 09:25:44

Du verwendest wohl Perl?? Wir reden hier von Bash.

ManfredG
Beiträge: 112
Registriert: 12.08.2004 17:38:14

Beitrag von ManfredG » 18.08.2004 21:59:25

Hallo,
ich rede auch von Bash!

Liebe Grüße
Manfred

Antworten