From 8c099d741e243e5daa09d1e1674675badc5f3bf3 Mon Sep 17 00:00:00 2001 From: Dalibor Pospisil Date: Thu, 19 Jun 2014 12:09:11 +0200 Subject: [PATCH 07/14] __INTERNAL_rlIsDistro: suppressed output of expr, speed optimization --- src/testing.sh | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/testing.sh b/src/testing.sh index afa7554..6c57bfc 100644 --- a/src/testing.sh +++ b/src/testing.sh @@ -997,24 +997,23 @@ __INTERNAL_rlIsDistro(){ echo $distro | grep -q "$1" || return 1 shift - [ -z "$1" ] && return 0 + [[ -z "$1" ]] && return 0 local arg for arg in "$@" do # sanity check - version needs to consist of numbers/dots/<=> - expr match "$arg" '[<=>]*[0-9][0-9\.]*$' >/dev/null || return 1 + [[ "$arg" =~ ^([\<=\>]*)([0-9][0-9\.]*)$ ]] || return 1 - sign="$(echo $arg | grep -Eo '^[<=>]+')" - if [ -z "$sign" ]; then - if [ "$arg" == "$whole" ] || [ "$arg" == "$major" ] + sign="${BASH_REMATCH[1]}" + arg="${BASH_REMATCH[2]}" + if [[ -z "$sign" ]]; then + if [[ "$arg" == "$major" || "$arg" == "$whole" ]] then return 0 fi else - # <=> match - arg="$(echo $arg | sed -r 's/^[<=>]+//')" - if expr index '.' $arg; then + if [[ "$arg" =~ \. ]]; then __INTERNAL_test_version "$whole" "$sign" "$arg" else __INTERNAL_test_version "$major" "$sign" "$arg" -- 1.9.3