On Thu, Jun 7, 2012 at 1:01 AM, Pierre Gaston <[email protected]>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