2016-10-12 2 views
0

Ich bin ein Ruby-Skript zu schreiben, wo ich zur Verwendung des BefehlsWie kann das System (...) einen String-String als Ausgabe nach dem Ausführen von Ruby-Skript ausgeben?

system('git log') 

zusammen mit einigen Fahnen und Formatierungseinstellun- mache mir die Zeit zu zeigen, Revision-ID und Dateiname jeder Datei, die in einem Repo hinzugefügt wurde .

Wie kann ich das Ergebnis dieses Befehls (d. H. Welches ist die oben für jede Datei angegebene Information) zu einer einzelnen Zeichenfolge machen, eine für jede in repo hinzugefügte Datei und dann alle diese Zeichenfolgen in ein Array einfügen?

Beispiel für aktuelles Ergebnis:

2016-10-11T22:07:06+01:00 b3d0893: example.txt 
2016-10-11T22:06:06+01:00 b3d0893: example1.txt 

mag ich die oben genannten zwei verschiedene Saiten sein und sie dann in einem Array setzen.

Antwort

1

Kernel#system gibt nur true oder false je nach dem Erfolg des Anrufs zurück. STDOUT vom Aufruf wird einfach ausgegeben, so dass Sie damit nichts anfangen können, wie Sie herausgefunden haben.

Wenn Sie zur Verwendung backticks wechseln stattdessen sollten Sie einen String bekommen kehrte mit STDOUT aus dem Befehl:

output = `git log` 

dass Ausgabezeichenfolge in eine Array von Zeilen aufgeteilt, verwenden String#split, so dass Sie so etwas wie

bekommen
output = `git log` 
lines = output.split(/\n/) 
+0

Vielen Dank, noch eine Frage, bevor Sie Ihre Antwort als die beste ticken. Wie kann ich auf dem Bildschirm ausgeben, ohne eine Doppellinie zwischen den Inhalten zu bekommen? –

+0

Ich bekomme doppelte Zeilen, wenn ich Puts verwende! –

+0

Fühlen Sie sich frei, eine neue Frage zu öffnen, wenn Sie Fragen haben, wie Sie den Inhalt eines 'Array' mit' puts' ausgeben können. Stellen Sie sicher, dass Sie den von Ihnen verwendeten Code und vorzugsweise ein Beispiel-Array verwenden, um das Problem zu reproduzieren. –

Verwandte Themen