Re: [PATCH] test-lib: check Bash version for '-x' without using shell arrays
Am 02.01.19 um 00:19 schrieb SZEDER Gábor:
Show 6 quoted lines
> 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.Show 21 quoted lines
> 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