From f1f7ec2c854004b78b82fc05f033b5c2c91bc6b9 Mon Sep 17 00:00:00 2001 From: Kazuki Suda Date: Sun, 4 Feb 2018 22:10:59 +0900 Subject: [PATCH] Fix attemptd assignment to non-variable in bash 3 flaghash variable is an associative array which is only supported in bash > 3. --- bash_completions.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/bash_completions.go b/bash_completions.go index c19fe7a0..6ff6c692 100644 --- a/bash_completions.go +++ b/bash_completions.go @@ -175,12 +175,15 @@ __handle_flag() fi # keep flag value with flagname as flaghash - if [ -n "${flagvalue}" ] ; then - flaghash[${flagname}]=${flagvalue} - elif [ -n "${words[ $((c+1)) ]}" ] ; then - flaghash[${flagname}]=${words[ $((c+1)) ]} - else - flaghash[${flagname}]="true" # pad "true" for bool flag + # flaghash variable is an associative array which is only supported in bash > 3. + if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" > 3 ]]; then + if [ -n "${flagvalue}" ] ; then + flaghash[${flagname}]=${flagvalue} + elif [ -n "${words[ $((c+1)) ]}" ] ; then + flaghash[${flagname}]=${words[ $((c+1)) ]} + else + flaghash[${flagname}]="true" # pad "true" for bool flag + fi fi # skip the argument to a two word flag