Wie vergleicht man Versionen einiger Produkte in Unix ksh shell?

8

Format der Versionen - X.X.X.X.
Wo X - Nummer.
Was ist der beste Weg, um zwei Versionen zu vergleichen? Ich benutze folgenden Code:

%Vor%

Aber ich mag es nicht - es ist sehr einfach Vielleicht gibt es viele Möglichkeiten, Versionen zu vergleichen?

    
Volodymyr Bezuglyy 18.08.2010, 10:16
quelle

5 Antworten

11

Pure Bash / Ksh:

%Vor%     
Fritz G. Mehner 18.08.2010, 10:32
quelle
7

Vielleicht könnten Sie awk ?

verwenden %Vor%

Es gibt keinen perfekten Weg, dies zu tun. Wie gezeigt, könnten Sie array / loop für die Zahlen verwenden, auch in bash .

    
schot 18.08.2010 10:28
quelle
4

Sie können sort -V verwenden, um die Zeilen mit Versionen zu sortieren und Ihre Version mit der Ausgabe abzugleichen:

%Vor%     
timurb 10.03.2013 15:42
quelle
2

Wenn Sie in Ihrem Shell-Skript mit Perl schummeln können, probieren Sie es aus Handhabung von Versionszeichenfolgen mit String-Vergleichsoperatoren:

%Vor%

Sie könnten auch die Perl-Variablen entfernen und einfach shift verwenden:

%Vor%

Aber das scheitert an Versionen & gt; 10. Du könntest das stattdessen versuchen:

%Vor%

Der Sprintf von "% 5d" soll sicherstellen, dass es auch für Firefox funktioniert, bis Version 99999 ...: -)

Natürlich können Sie auch die anderen Perl-String-Operatoren wie gt, lt, ge und le verwenden.

    
mivk 09.09.2011 19:52
quelle
0

Ich hatte dieses Problem, und nachdem ich es gelöst hatte, suchte ich nach einer besseren Antwort, die bereits verfügbar war. Meine Version erlaubt den Vergleich von Versionszeichenfolgen unterschiedlicher Länge und ist die Funktion version_ge () unten, die wie in

als Operator "größer oder gleich" verwendet werden sollte

if version_ge "$ version" "1.2.3.4"; dann ...

%Vor%     
Dave Hines 14.08.2013 16:27
quelle

Tags und Links