WinFuture-Forum.de: Shellscript-aufruf - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Linux
Seite 1 von 1

Shellscript-aufruf Parameter in Textdatei


#1 Mitglied ist offline   Nigg 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.344
  • Beigetreten: 19. Mai 04
  • Reputation: 14
  • Geschlecht:Männlich

geschrieben 15. April 2009 - 09:11

Hallo,

ich habe ein Script, ich nenne es mal test.sh, welches immer wieder aufgerufen werden soll, allerdings mit Parametern die in einer Textdatei stehen. Momentan wird das Script so aufgerufen.

start.sh, Inhalt:
/opt/test/test.sh parameter
/opt/test/test.sh parameter2
/opt/test/test.sh parameter3
/opt/test/test.sh parameter4
/opt/test/test.sh parameter27


Mein Ziel ist, das die Textdatei nur noch die Parameter enthält welche jeweils in einer Zeile stehen:
parameter
parameter2
blumenkohl
parameter4
apfel
parameter27


Jemand eine Idee?

Dieser Beitrag wurde von Nigg bearbeitet: 15. April 2009 - 09:13

npm - nginx php mysql

Wenn dir kalt is, geh in eine Ecke, da sind meist 90°
0

Anzeige



#2 _lustiger_affe_

  • Gruppe: Gäste

geschrieben 15. April 2009 - 11:06

Einfach ne einfache for- oder while-Schleife machen.

Edit, warum überhaupt mehrmals starten und nicht einfach gleich alle Parameter übergeben?

Dieser Beitrag wurde von lustiger_affe bearbeitet: 15. April 2009 - 11:07

0

#3 Mitglied ist offline   Nigg 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.344
  • Beigetreten: 19. Mai 04
  • Reputation: 14
  • Geschlecht:Männlich

geschrieben 16. April 2009 - 23:20

naja, weil die .sh mit verschiedenen Parametern aufgerufen werden soll, nacheinander :huh:

Hast du ein Beispiel wie der Syntax für eine for-Schleife in der Bash wäre?
npm - nginx php mysql

Wenn dir kalt is, geh in eine Ecke, da sind meist 90°
0

#4 _lustiger_affe_

  • Gruppe: Gäste

geschrieben 17. April 2009 - 00:22

Zitat

naja, weil die .sh mit verschiedenen Parametern aufgerufen werden soll, nacheinander
Das könntest du doch auch intern im Skript handlen...

Zitat

Hast du ein Beispiel wie der Syntax für eine for-Schleife in der Bash wäre?

for a in blub
do
   test.sh $blub
done


Wie du dir blub dann zusammenbaust, bleibt dir überlassen. Entweder per direkter Übergabe(Einzelstrings mit Leerzeichen natürlich in "") oder per Ausgabe eines anderen Aufrufs.

Hübscher wäre halt, deine test.sh entsprechend zu gestalten, dass sie eine beliebige Anzahl an Parametern handlen kann ("$*" entält alle übergebenen Sachen, falls Optionen von der Cli kommen, wäre "shift" oder "getopt" angebracht). Perl/Ruby wäre wahrscheinlich noch einfacher :huh:

Poste doch deinen Code, dann kann man sehen, was sich wie am besten handlen lässt.
0

#5 Mitglied ist offline   Nigg 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.344
  • Beigetreten: 19. Mai 04
  • Reputation: 14
  • Geschlecht:Männlich

geschrieben 17. April 2009 - 09:57

Es macht null Sinn das die .sh die aufgerufen wird mehr Parameter verarbeitet. Das würde einer parallelisierung gleich kommen was beim Packen von riesigen Archiven wenig nützt. Der Aufruf könnte genauso /usr/bin/7za a (blahfasel.7z /home/files/usr396/random/blahfasel/*) sein wobei das eingeklammerte dann der Teil wäre der in der einzulesenden Parameter-Textdatei steht. Da es sich aber um willkürliche Parameter handelt macht es hier keinen Sinn, beispielsweise "usrXXX" zu benutzen. Die externe .sh muss schon jedes mal aufgerufen werden.

Mir gehts ja gerade um das auslesen aus der Textdatei! Wie ich dann ne Schleife damit ausführe weeß ick. Ich kann das Format der Textdatei nicht beeinflussen, er müsste also wirklich jede Zeile kopieren, ausführen und dann zur nächsten übergehen, nur wie ?

Dieser Beitrag wurde von Nigg bearbeitet: 17. April 2009 - 10:08

npm - nginx php mysql

Wenn dir kalt is, geh in eine Ecke, da sind meist 90°
0

#6 Mitglied ist offline   Sebastian83 

  • Gruppe: aktive Mitglieder
  • Beiträge: 226
  • Beigetreten: 16. Juni 08
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 17. April 2009 - 10:27

Wie wär's damit:

cat /pfad/zur/textdatei.txt | while read zeile; do
   /opt/test/test.sh $zeile
done


Diese Schleife liest die Textdatei aus und führt für jede Zeile das Script test.sh mit dem Zeileninhalt als Parameter aus. Die Textdatei darf also keine zusätzlichen Zeilen, wie z.B. Kommentare enthalten. Enthält eine Zeile Leerzeichen müsstest du
/opt/test/test.sh "$zeile"
schreiben.

Dieser Beitrag wurde von Sebastian83 bearbeitet: 17. April 2009 - 10:29

0

#7 Mitglied ist offline   Nigg 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.344
  • Beigetreten: 19. Mai 04
  • Reputation: 14
  • Geschlecht:Männlich

geschrieben 17. April 2009 - 11:01

Vielen Dank! Funktioniert perfekt! Auf cat hätte ich auch selbst kommen können. Danke an euch beide für eure Zeit.

Dieser Beitrag wurde von Nigg bearbeitet: 17. April 2009 - 11:01

npm - nginx php mysql

Wenn dir kalt is, geh in eine Ecke, da sind meist 90°
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0