From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 484 invoked by alias); 19 Nov 2015 22:16:15 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 20969 Received: (qmail 14726 invoked from network); 19 Nov 2015 22:16:14 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:mime-version:content-type; bh=+guJsuLgEXWn8N8bEm+Q8IldJaMnL9jJXu5WZWdhAKk=; b=AkDiNFF0ppRPF2Tg93o4OydXekz2ooGZLBqxCmLVOJBOIGsziz8YMZXYj0ROh3lPz4 7FtjRa2VRQgvZEeJkhW1aqlyzBqN0iOtFXQ9Kb5wL8piARGwi+hKaHoyZEkerpQjqneR 524rTI9cgyzFJO/cyE9NMM/nX5BB0sewrHqb1Io1dT/gM4ENxc737XRISjcnz0W1MWoF 2LsMAjrSmqcJAyii0CkAKanERgk8AcMMUcADVbR/qPkpTkieVdqCsT7glOwu2W4JC0BN k0+8PrArKATnj8oP8D41ZfhUVwQnD6jtwotQERAB0UIY7L6ZYuLEumtQ8y3s7yu6MRDb hY1A== X-Received: by 10.129.145.11 with SMTP id i11mr9292228ywg.118.1447971371226; Thu, 19 Nov 2015 14:16:11 -0800 (PST) From: "TJ Luoma" To: "Zsh-Users List" Subject: Version String Comparison Date: Thu, 19 Nov 2015 17:16:08 -0500 Message-ID: <9A09EF7C-A81B-4ED9-A266-C6A53BC98167@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; format=flowed X-Mailer: MailMate (1.9.3r5180) I am looking for a zsh way to compare version numbers, which is smart enough to know that, for example "6.7.0.36" is less than "6.7.0.0044" I have been using a 'version' function below, which I found somewhere and I _thought_ worked for this scenario, but I'm now finding that it does not: INSTALLED_VERSION="6.7.0.36" LATEST_VERSION="6.7.0.0044" function version { echo "$@" | awk -F. '{ printf("28%03d%03d%03d\n", $1,$2,$3,$4); }'; } if [ $(version ${LATEST_VERSION}) -le $(version ${INSTALLED_VERSION}) ] then # No Update Needed echo "$NAME: Up To Date (Installed: $INSTALLED_VERSION and Latest: $LATEST_VERSION)" exit 0 fi But that gives me Up To Date (Installed: 6.7.0.36 and Latest: 6.7.0.0044) (I'd also like to be able to compare version strings such as "5.0b5" and "5.0b10") TjL