[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: test '-v' - associative vs. normal array discrepancy - a bug ?
From: |
Piotr Grzybowski |
Subject: |
Re: test '-v' - associative vs. normal array discrepancy - a bug ? |
Date: |
Wed, 19 Nov 2014 20:14:24 +0100 |
hi,
the following makes -v return true for non-empty associative arrays,
what do you think?
diff --git a/test.c b/test.c
index ab7bec7..8a91d1e 100644
--- a/test.c
+++ b/test.c
@@ -638,9 +638,13 @@ unary_test (op, arg)
}
else if (v && invisible_p (v) == 0 && assoc_p (v))
{
- char *t;
- t = assoc_reference (assoc_cell (v), "0");
- return (t ? TRUE : FALSE);
+ HASH_TABLE *h=assoc_cell (v);
+ if (h && h->nentries>0)
+ {
+ return (TRUE);
+ } else {
+ return (FALSE);
+ }
}
#endif
return (v && invisible_p (v) == 0 && var_isset (v) ? TRUE : FALSE);
cheers,
pg
On Wed, Nov 19, 2014 at 5:39 PM, Greg Wooledge <wooledg@eeg.ccf.org> wrote:
> On Wed, Nov 19, 2014 at 04:20:51PM +0000, Jason Vas Dias wrote:
>> Good day -
>> Please could anyone explain why the first command below produces no output:
>> $ ( declare -A a=([a]=1); if [ -v a ]; then echo yes; fi )
>> $ ( declare -a a=([0]=1); if [ -v a ]; then echo yes; fi )
>> yes
>
> In a lot of places, when you use the name of an array without an index,
> Bash assumes you mean index 0.
>
> imadev:~$ unset a; declare -a a=([1]=1); test -v a && echo yes
> imadev:~$ unset a; declare -A a=([0]=1); test -v a && echo yes
> yes
>
> So it's not indexed vs. associative arrays. It's simply the fact that you
> used index a instead of index 0, plus the fact that -v a is really -v 'a[0]'.
>
> Does this make -v unusable for arrays? Possibly.
>
- test '-v' - associative vs. normal array discrepancy - a bug ?, Jason Vas Dias, 2014/11/19
- Re: test '-v' - associative vs. normal array discrepancy - a bug ?, Greg Wooledge, 2014/11/19
- Re: test '-v' - associative vs. normal array discrepancy - a bug ?,
Piotr Grzybowski <=
- Re: test '-v' - associative vs. normal array discrepancy - a bug ?, Chet Ramey, 2014/11/19
- Re: test '-v' - associative vs. normal array discrepancy - a bug ?, Piotr Grzybowski, 2014/11/19
- Re: test '-v' - associative vs. normal array discrepancy - a bug ?, Jason Vas Dias, 2014/11/19
- Re: test '-v' - associative vs. normal array discrepancy - a bug ?, Greg Wooledge, 2014/11/19
- Re: test '-v' - associative vs. normal array discrepancy - a bug ?, Eduardo A . Bustamante López, 2014/11/19
- Re: test '-v' - associative vs. normal array discrepancy - a bug ?, Greg Wooledge, 2014/11/19
- Re: test '-v' - associative vs. normal array discrepancy - a bug ?, Piotr Grzybowski, 2014/11/19
- Re: test '-v' - associative vs. normal array discrepancy - a bug ?, Greg Wooledge, 2014/11/19
- Re: test '-v' - associative vs. normal array discrepancy - a bug ?, Piotr Grzybowski, 2014/11/19
- Re: test '-v' - associative vs. normal array discrepancy - a bug ?, Greg Wooledge, 2014/11/19