[pacman-dev] [PATCH] Make strip paths configurable

Dan McGee dpmcgee at gmail.com
Tue Jul 29 07:45:15 EDT 2008


On Tue, Jul 29, 2008 at 1:00 AM, Xavier <shiningxc at gmail.com> wrote:
> On Tue, Jul 29, 2008 at 2:06 AM, Henning Garus
> <henning.garus at googlemail.com> wrote:
>> On Mon, 28 Jul 2008 23:44:13 +0200
>> Xavier <shiningxc at gmail.com> wrote:
>>
>>> Anyway, I have something else, look :
>>> [xavier at nx7400 ~]$ array=('' {foo,bar,baz})
>>> [xavier at nx7400 ~]$ [ -z "${array[@]}" ] || echo array not empty
>>> bash: [: too many arguments
>>> array not empty
>>> [xavier at nx7400 ~]$ [ -z "${array[*]}" ] || echo array not empty
>>> array not empty
>>>
>>> I never understood what the differences between @ and * were though...
>>>
>>
>>
>> The way I understand it "${array[@]}" is expanded to "foo" "bar" "baz",
>> while "${array[*]}" is expanded to "foo%bar%baz" where % is the first
>> character of $IFS (meaning ' ' if not set otherwise).
>>
>> So with @ you get several words for the test, which would explain the
>> observed behaviour.
>>
>> Interestingly enough [[ -z "${array[@]}" ]] seems to work as well...
>>
>
> Hmm now we have too many solutions and I don't know which one to choose.
> 1) [ -z "$array" ]
> 2) [ -z "${array[*]}" ]
> 3) [[ -z "${array[@]}" ]]
>
> (the current problematic one is [ -z "${array[@]}" ] ).
> So you can vote now :)

I think (2) is what we are looking for. "If the array (as a whole)
contains anything, then..."

-Dan




More information about the pacman-dev mailing list