[gelöst] Shell-Skript - Variabel aus separater Textdatei?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
ManuelSchweer
Beiträge: 195
Registriert: 03.05.2010 15:15:24
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wetter (Ruhr)
Kontaktdaten:

[gelöst] Shell-Skript - Variabel aus separater Textdatei?

Beitrag von ManuelSchweer » 23.03.2014 11:02:28

Mahlzeit,
Ich habe gestern nach langer Zeit mal wieder ein Skript geschrieben (mein erstes unter Linux) und musste feststellen, dass da deutlich mehr Möglichkeiten gegeben sind, als ich dachte. :D Das Skript funktioniert bereits und fragt am Anfrag eine Variabel ab, die lediglich aus ein paar Buchstaben, einem Bindestrich und letztlich einer Zahlenkombination besteht.

Für jeden Durchlauf muss ich also das Skript starten und die gewünschte Variabel eingeben. Da ich aber gesehen habe, dass auch if, else und co in Skripten möglich sind und ich oft auch mehrere Durchläufe machen will, kam mir die Idee die verschieden Daten zu der Variabel in eine Textdatei zu schreiben, beispielsweise so:

ghdz-9464
bhwg-9235
plojh-5243

Ist es grundsätzlich möglich von einem Skript aus dann die einzelnen Zeilen auszulesen und in das Skript einzusetzen? Nach dem Motto: Solange Daten vorhanden starte das Skript von vorne

Es würde natürlich auch reichen, wenn ich die Daten im Skript selber ablege und mit einem +1 Zähler arbeite, falls das möglich ist. Bisher habe ich nur PHP-Erfahrung (allerdings vor 7 Jahren das letzte mal genutzt), daher gefährliches Halbwissen im Moment. ;) Und erstere Methode wäre sicherlich "sauberer". ;)

LG
Zuletzt geändert von ManuelSchweer am 23.03.2014 15:29:28, insgesamt 1-mal geändert.

DeletedUserReAsG

Re: Shell-Skript - Variabel aus separater Textdatei?

Beitrag von DeletedUserReAsG » 23.03.2014 11:16:37

Code: Alles auswählen

for I in $(cat file.mit.den.Variablen); do irgendwas mit $I; done
… ist meine Standardherangehensweise. Vllt. hilft es als Denkanstoß?

Benutzeravatar
ManuelSchweer
Beiträge: 195
Registriert: 03.05.2010 15:15:24
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wetter (Ruhr)
Kontaktdaten:

Re: Shell-Skript - Variabel aus separater Textdatei?

Beitrag von ManuelSchweer » 23.03.2014 11:18:45

Optimal, reicht. :) Danke.

Ich wollte ja nicht die Lösung, sondern nur nen Anreiz zum Basteln. :)

EDIT: Denkanstoß? Das war doch schon die Lösung.^^ I durch den Namen meiner Variabelen austauschen, do vor und done hinter den zu wiederholenden Teil. :) Läuft großartig und macht irgendwie Lust darauf sich mehr mit sowas zu beschäftigen. :THX: :hail:

newdeb
Beiträge: 134
Registriert: 03.02.2011 11:11:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Frankfurt

Re: Shell-Skript - Variabel aus separater Textdatei?

Beitrag von newdeb » 23.03.2014 15:11:37

Code: Alles auswählen

$ cat test.cfg
VAR_1=wert-1
VAR_2=wert-2
VAR_3=wert-3

$ eval $(<test.cfg)
$ echo $VAR_{1,2,3}
wert-1 wert-2 wert-3

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: [gelöst] Shell-Skript - Variabel aus separater Textdatei

Beitrag von Cae » 23.03.2014 15:55:37

Wobei eval Code ausfuehren kann und man sich dabei echt in's Knie schiessen kann. Besser ist da read:

Code: Alles auswählen

$ cat data
a=b
c=d
e=f
$ cat read-and-print 
#!/bin/sh

while IFS== read name value; do
	echo "'$name' -> '$value'"
done
$ ./read-and-print <data
'a' -> 'b'
'c' -> 'd'
'e' -> 'f'
$ 
Bei der Subshell-Variante ($(cat ...)) oben hat man auch das Problem, dass Leerzeichen in Zeilen diese aufspalten. Falls es keine Leerzeichen gibt, stoert das aber nicht.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten