From 8c099d741e243e5daa09d1e1674675badc5f3bf3 Mon Sep 17 00:00:00 2001
From: Dalibor Pospisil <dapospis@redhat.com>
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