bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: question on retrieving map(-A) value w/indirect name


From: L A Walsh
Subject: Re: question on retrieving map(-A) value w/indirect name
Date: Sat, 17 Mar 2018 20:28:59 -0700
User-agent: Thunderbird



David Margerison wrote:
processSrvState() {
  local cur_up="$1[cur_up]"
  local max_up="$1[max_up]"
  if [[ "${!cur_up}" == "${!max_up}" ]] ; then
    echo ok
  fi
}

declare -A foo=([cur_up]=11 [max_up]=11)

processSrvState foo

# note that the array name must not conflict with any keys
Thanks for the idea. I put it into a general sub for my use
(no error checking in this version):

hval() {                 # 1st=mapname, 2nd=key, 3rd=opt. outvar name
 dcl _hkey="$1[$2]" nl=""
 [[ ! $3 ]] && nl="\n"
 printf ${3:+-v $3} "%s$nl" ${!_hkey}
}


so for:

 dcl A foo=([one]=1 [two]=2)
 hval foo two
2
 hval foo two outv
 echo $outv
2

Thanks much!





reply via email to

[Prev in Thread] Current Thread [Next in Thread]