Ich schreibe ein Korn Shell-Skript, wo ich versuche, über bestimmte Zeilen im git diff
Ergebnis einer Datei zu iterieren. Für diejenigen, die nicht wissen, git diff
listet die Änderungen an einer Datei gemacht, und seine Ausgabe wird in etwa wie folgt aussehen (nur Linien 3 und 5 geändert vorausgesetzt):Suche git diff-Ausgabe für bestimmte Arten von Änderungen
unchanged line 1
unchanged line 2
- previous version of line 3
+ new version of line 3
unchanged line 4
- previous version of line 5
+ new version of line 5
ich dieses Ergebnis gespeichert in einer Zeichenfolge Variable (zB diff
), und ich muss über jede Zeile in diff
beginnend mit einem +
oder einem -
(zum Beispiel - previous version of line 3
) iterieren. Die intuitivste Lösung ist offensichtlich, über jede Zeile in diff
zu iterieren und etwas wie if line contains + or -
zu verwenden, aber ich kann das nicht tun, da diff
kein Array von separaten Zeilen ist, sondern eine Zeichenfolge, die durch \n
an Orten getrennt ist.
Also was ich am Ende suche ist eine Möglichkeit, jeden Teil der Zeichenfolge zwischen zwei \n
Zeichen zu extrahieren.
Wie erreiche ich das in Korn Shell? Oder vielleicht könnt ihr bessere Alternativen vorschlagen?
Und Sie haben versagt 'in diese zu markieren korn' .. Btw, einen Zweifel. Unterstützt korn shell keine bashähnlichen Arrays? – sjsam
@sjsam Korn wird nicht als Tag angezeigt, wenn ich danach suche. Es zeigte sich bis gestern. Und Korn unterstützt Arrays. Schlägst du vor, ich extrahiere jeden Teil des Ergebnisses zwischen zwei '\ n' Zeichen und verschiebe es in ein Array? – lebowski
Ich glaube nicht, dass Sie es extrahieren müssen. Sie können immer eine Befehlsersetzung innerhalb eines Array-Operators durchführen. In Bezug auf die Korn-Tag, tut mir leid, dass dann – sjsam