strings in variable mit schleife einsetzen ?

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

strings in variable mit schleife einsetzen ?

Beitrag von vobie » 06.05.2010 20:52:27

hi,

ich habe ein Problem.
ich muss jede Menge strings einer variable zuweisen die in einem shell script der reihe nach einem Programm zur Auswertung übergeben werden soll.

Also:
#strings
start
stop
weiter
vor
zurück
up
down
left
usw .....

program= Program
variable="Start"
$program$variable

geht das überhaupt mit einem shell script.
wichtig ist das der string in der variable in " " seht und nach einander ersetzt und abgearbeitet wird.

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

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: strings in variable mit schleife einsetzen ?

Beitrag von Duff » 07.05.2010 08:07:33

Habe es noch nicht so ganz verstanden, aber damit immer wieder eine neue Zeile aus einer Datei (oder woher auch immer) gelesen wird, musst du wohl einen Filedeskriptor verwenden.

In etwa so:

Code: Alles auswählen

#!/bin/bash
exec 3< $1
while read line <&3
do
  echo $line
  echo -n "Next line? [yes/no]: "
  read
  [ "$REPLY" = "n" ] && break
done
# Filedeskriptor aufloesen
exec 3>&-
Oh, yeah!

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

Re: strings in variable mit schleife einsetzen ?

Beitrag von Meillo » 07.05.2010 09:32:15

Ich bin mir auch nicht sicher, ob ich das Problem korrekt verstanden habe. (btw: Du solltest besser *das Problem* beschreiben und nicht *deinen Implementierungsvorschlag*.)

Was spricht gegen sowas?

Code: Alles auswählen

for i in start stop weiter vor zurück up down left "zwei Worte" ; do
    program "$i"
done
Use ed once in a while!

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

Re: strings in variable mit schleife einsetzen ?

Beitrag von vobie » 07.05.2010 15:16:13

hi,
danke erst mal,
Vielleicht habe ich mich wirklich nicht so richtig ausgedrückt.

Ich habe ein Programm das bestimmte Argumente bei der Eingabe erwartet und diese dann ausführt.
Nun gibt es aber ca 150 verschiedene Argumente die das Programm der reihe nach (die Argumente können sich auch wiederholen oder die Reihenfolge kann sich ändern) abarbeiten soll.
Beispiel
ich habe 200 IP Adressen die sollen in einer bestimmten, durch z.b. eine Steuer-Datei, festgelegten Reihenfolge angepingt werden.
also
Datei_1:
192.168.xxx.xx1
192.168.xxx.xx2
192.168.xxx.xx3
192.168.xxx.xx4
...

Datei_2:
192.168.xxx.xx4
192.168.xxx.xx6
192.168.xxx.x10
192.168.xxx.x25
...

im skript
#var_ip
ping -c1 $var_ip
...
var_ip ist dann die IP aus Datei_1 oder Datei_2
Ist nur ein Beispiel !

Syntax:
Programm --action="Argument"
Das Programm erwartet die Argumente in " " , also Programm --action="vor" oder Programm --aktion="up" usw.

hoffe es ist jetzt verständlicher

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

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Re: strings in variable mit schleife einsetzen ?

Beitrag von nepos » 07.05.2010 20:13:28

Ne ganz simple Variante, wenn die Daten zeilenweise vorliegen:

Code: Alles auswählen

#!/bin/bash

while read arg; do
    echo "Argument: $arg"
done
Aufruf z.B. so:

Code: Alles auswählen

seq 10 | ./script.sh
Und das Ergebnis:

Code: Alles auswählen

Argument: 1
Argument: 2
Argument: 3
Argument: 4
Argument: 5
Argument: 6
Argument: 7
Argument: 8
Argument: 9
Argument: 10
Wen du die Parameter in einer Datei hast, dann halt einfach so:

Code: Alles auswählen

./script.sh < datei

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

Re: strings in variable mit schleife einsetzen ?

Beitrag von vobie » 07.05.2010 23:56:59

danke
probiere ich gleich mal aus

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

Antworten