[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Syntax Question...
From: |
Michael Witten |
Subject: |
Re: Syntax Question... |
Date: |
Sun, 14 Aug 2011 05:56:43 +0000 |
On Sun, Aug 14, 2011 at 04:55, Linda Walsh <bash@tlinx.org> wrote:
>
>
>
> ` Michael Witten wrote:
>>
>> On Sat, Aug 13, 2011 at 23:41, Linda Walsh <bash@tlinx.org> wrote:
>>
>>>
>>> ${#${!name}[*]}
>>> bash: ${#${!name}[*]}: bad substitution
>>>
>>
>> It's probably what you're trying to avoid, but you'll probably have to
>> construct and then eval the right code by hand:
>>
>> $(eval "echo \${#$name[*]}")
>>
>
> bingo. (sigh)
>
> I refactored and am essentially using spaces to store the values in
> a string, then when I want to check the, I throw them into an array and
> manip.
> e.g. (not showing all supporting code)
>
> declare -axr _plst_t='_plist_'
> declare -axl defined_PLists=()
>
> add things to the list...
>
> plist="$_plst_t$plist"
> local -al plist_deps=( $plist )
>
> {search for value in list, ...]
>
> unless ((found)) ; then
> plist_deps[${#plist_deps[*]}]="$subdep"
> eval "$plist=( "$plist_deps[@]" )"
> fi
You want this:
unless ((found)) ; then
plist_deps+=("$subdep")
eval $plist='("${plist_deps[@]}")'
fi
Of course, isn't the variable `plist' supposed to be a reference to
your *string* variable that holds a space-separated list of items? In
that case, the last line should be:
IFS=' ' eval $plist='"${a[*]}"'
- Syntax Question..., Linda Walsh, 2011/08/13
- Re: Syntax Question..., Dennis Williamson, 2011/08/13
- Re: Syntax Question..., Michael Witten, 2011/08/13
- Re: Syntax Question..., Linda Walsh, 2011/08/14
- Re: Syntax Question..., Pierre Gaston, 2011/08/14
- Re: Syntax Question..., Linda Walsh, 2011/08/14
- Re: Syntax Question..., Pierre Gaston, 2011/08/14
- Re: Syntax Question..., Linda Walsh, 2011/08/14
- Re: Syntax Question..., Dennis Williamson, 2011/08/14