Am 02.01.19 um 00:19 schrieb SZEDER Gábor:
Alas, it has been reported that NetBSD's /bin/sh does complain about
them:

   ./test-lib.sh: 327: Syntax error: Bad substitution

where line 327 contains the first ${BASH_VERSINFO[0]} array access.

diff --git a/t/test-lib.sh b/t/test-lib.sh
index 0f1faa24b2..f47a191e3b 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -324,9 +324,12 @@ do
                # isn't executed with a suitable Bash version.
                if test -z "$test_untraceable" || {
                     test -n "$BASH_VERSION" && {
-                      test ${BASH_VERSINFO[0]} -gt 4 || {
-                        test ${BASH_VERSINFO[0]} -eq 4 &&
-                        test ${BASH_VERSINFO[1]} -ge 1
+                      bash_major=${BASH_VERSION%%.*}
+                      bash_minor=${BASH_VERSION#*.}
+                      bash_minor=${bash_minor%%.*}
+                      test $bash_major -gt 4 || {
+                        test $bash_major -eq 4 &&
+                        test $bash_minor -ge 1
                       }
                     }
                   }


Would it perhaps be simpler to just hide the syntax behind eval? Like

                if test -z "$test_untraceable" || {
                     test -n "$BASH_VERSION" && eval '
                       test ${BASH_VERSINFO[0]} -gt 4 || {
                         test ${BASH_VERSINFO[0]} -eq 4 &&
                         test ${BASH_VERSINFO[1]} -ge 1
                       }
                     '

-- Hannes

Reply via email to