mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 28.03.2024 19:56 Benutzername: Passwort: Auto-Login

Thema: [Shellskript] wie String-Inhalte durch Leerzeichen zerlegen? vom 04.11.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [Shellskript] wie String-Inhalte durch Leerzeichen zerlegen?
Seite: 1, 2  Weiter
Autor Nachricht
lordle
Threadersteller

Dabei seit: 14.12.2001
Ort: Augsburg
Alter: 48
Geschlecht: Männlich
Verfasst Fr 04.11.2005 08:54
Titel

[Shellskript] wie String-Inhalte durch Leerzeichen zerlegen?

Antworten mit Zitat Zum Seitenanfang

folgendes Problem. Ich hab in einem Shellskript einen String, der durch Leerzeichen getrennt Dateinamen weiterer Shell-Skripte trägt. Diese Shell-Skripte sollen dann ausgeführt werden.
also etwa so
Code:
d="datei1.sh datei2.sh datei3.sh"


wie krieg ichs jetzt hin, dass die Shell-Skripte ausgeführt werden? mit PHP hätt ich nen explode gemacht, und dann den Array inner Schleife geleert... * Keine Ahnung... *
  View user's profile Private Nachricht senden
Mac

Dabei seit: 26.08.2005
Ort: Köln
Alter: 62
Geschlecht: Männlich
Verfasst Fr 04.11.2005 09:00
Titel

Antworten mit Zitat Zum Seitenanfang

war da nich was mit cat?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
sahnemuh

Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht: Männlich
Verfasst Fr 04.11.2005 09:50
Titel

Antworten mit Zitat Zum Seitenanfang

d="sh datei1.sh && datei2.sh && datei3.sh"

Zuletzt bearbeitet von sahnemuh am Fr 04.11.2005 09:50, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
lordle
Threadersteller

Dabei seit: 14.12.2001
Ort: Augsburg
Alter: 48
Geschlecht: Männlich
Verfasst Fr 04.11.2005 10:00
Titel

Antworten mit Zitat Zum Seitenanfang

sahnemuh hat geschrieben:
d="sh datei1.sh && datei2.sh && datei3.sh"

jou. wäre cool, wenn ich den String selber erstellen würde! *zwinker*
aber der string kommt aus der Datenbank:
Code:
d=$(mysql -pPASS -uUSER -DDB --execute="SELECT * FROM shellskripte" | awk '{print $4}')

das liefert dann eben $d wie von mir beschrieben...

Kurz beschrieben, fallses doch anders besser gehen sollte:
Ich schreib in eine Datenbank die Namen von Shellskripten mit Zeitstempel. Nun soll ein Cron alle paar Minuten die Datenbank auslesen und Skripte mit dem richtigen Zeitstempel ausführen.
Bisher sieht der Aufruf der ganzen Schose so aus:
Code:
#!/bin/sh

# erstmal aktuelle Zeit erfassen
t=$(date +%s)

# dann zwei Minuten addieren
t=`expr $t + 120`

# MySQL-Query absetzen, was in zwei Min. fällig ist
s=$(mysql -pPASS -uUSER -DDB --execute="SELECT * FROM shellskripte WHERE startzeit > $t" | awk '{print $4}')

# hier sollte jetzt einerseits der spaltenname ("shellskript") rausgelöscht werden und
# die Skripte im Verzeichnis /core/ssh/$s ausgeführt werden.
# Sind momentan in der Variablen $s mit Leerzeichen getrennt.
echo $s
  View user's profile Private Nachricht senden
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Fr 04.11.2005 10:06
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
war da nich was mit cat?

ahh... knapp daneben ist auch vorbei... Grins

cut, nicht cat.

du kannst mit cut strings zerlegen. mit der option -d kann man ein anderes trennzeichen als den tabstop (also hier ein leerzeichen) angeben.


Zuletzt bearbeitet von rob am Fr 04.11.2005 10:07, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
lordle
Threadersteller

Dabei seit: 14.12.2001
Ort: Augsburg
Alter: 48
Geschlecht: Männlich
Verfasst Fr 04.11.2005 10:17
Titel

Antworten mit Zitat Zum Seitenanfang

rob hat geschrieben:
Zitat:
war da nich was mit cat?

ahh... knapp daneben ist auch vorbei... Grins

cut, nicht cat.

du kannst mit cut strings zerlegen. mit der option -d kann man ein anderes trennzeichen als den tabstop (also hier ein leerzeichen) angeben.

ah, klingt mal net schlecht! *zwinker* gleich mal testen. cat war mir jetzt auch etwas wirr! *G*

edit:
hmm.. klappt nicht auf anhieb:
Code:
cut -d=  -c=datei1.sh datei2.sh
cut: Ein Eingabe-Begrenzer darf nur angegeben werden, wenn auf Feldern gearbeitet wird
,,cut --help" gibt weitere Informationen.


Bin grad dabei für ne schnelle lösung mit der Variable $s ein PERL-Skript zu starten, welches dann die ganze weiterverarbeitung startet.
Code:
#!/usr/bin/perl
$befehl = "sh ";
$j = 0;
foreach $i(@ARGV) {
   if ($i ne "shellskript") {
      if ($j > 0) {
         $befehl .= " && ";
      }
      $befehl .= $i;
      $j++;
   }
}
$status = qx($befehl);
print $status;

Problem ist nur, dass das Perlskript wartet, bis das shellskript fertig durchgelaufen ist und nicht einfach den Befehl absetzt und weitermacht. So hab ich dann u.U. mehrere Skripte gleichzeitig am laufen.


Zuletzt bearbeitet von lordle am Fr 04.11.2005 10:25, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
karmacoder

Dabei seit: 15.04.2002
Ort: Fürth
Alter: 42
Geschlecht: Männlich
Verfasst Fr 04.11.2005 12:29
Titel

Antworten mit Zitat Zum Seitenanfang

wenn du nicht warten willst nimmst auch nur ein &.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
lordle
Threadersteller

Dabei seit: 14.12.2001
Ort: Augsburg
Alter: 48
Geschlecht: Männlich
Verfasst Fr 04.11.2005 12:53
Titel

Antworten mit Zitat Zum Seitenanfang

karmacoder hat geschrieben:
wenn du nicht warten willst nimmst auch nur ein &.

jein! *zwinker*
das problem ist ja nicht nur, dass ein skript nach dem anderen gestartet wird, sondern, dass PERL wartet, bis die Shell wieder geschlossen ist und dann erst das Skript weiterverarbeitet.
Da meine Skripte mitunter 2min. laufen, ist währenddessen das PERL-Skript noch offen, was es nicht sein muss. Befehl absetzen und weiter im Text heisst hier die Devise...
  View user's profile Private Nachricht senden
 
Ähnliche Themen [php] String in Einzelteile zerlegen und in Array schreiben?
RegExp String zwischen 2 Zeichen in einem String entfernen
php - array nach zeichenanzahl zerlegen
Zusammenhängende Pfade Illustrator zerlegen
[PHP] String -> date
[AS] String als Variable
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.