[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Indirect access to variables, including arrays (was Re: Compare 2 ar
From: |
Bill Gradwohl |
Subject: |
Re: Indirect access to variables, including arrays (was Re: Compare 2 arrays.) |
Date: |
Thu, 7 Jun 2012 15:14:57 -0600 |
On Thu, Jun 7, 2012 at 1:01 AM, Pierre Gaston <pierre.gaston@gmail.com>wrote:
> Fwiw here is a robust and simple solution for in_:
>
> _in () {
> local e t
> t="${2:?}[@]";
> for e in "${!t}"; do [[ $1 = "$e" ]] && return 0;done
> return 1;
> }
>
>
The following won't have a name space collision with the 'e' variable and I
got rid of 't'.
_in () {
if [ "$2" != 'e' ]; then
set -- "$1" "${2:?}[@]"
local e
for e in "${!2}"; do
[[ $1 == "$e" ]] && return 0
done
else
set -- "$1" "${2:?}[@]"
local _e
for _e in "${!2}"; do
[[ $1 == "$_e" ]] && return 0
done
fi
return 1
}
array=(a b c abc d e f)
_in abc array && echo Yes || echo No
array=(a b c abxc d e f)
_in abc array && echo Yes || echo No
e=(a b c abc d e f)
_in abc e && echo Yes || echo No
e=(a b c abxc d e f)
_in abc e && echo Yes || echo No
--
Bill Gradwohl