[pacman-dev] bash argument passing help

Aaron Griffin aaronmgriffin at gmail.com
Wed Oct 21 09:11:27 EDT 2009


On Tue, Oct 20, 2009 at 10:34 PM, Dan McGee <dpmcgee at gmail.com> wrote:
> On Tue, Oct 20, 2009 at 10:30 PM, Allan McRae <allan at archlinux.org> wrote:
>> Aaron Griffin wrote:
>>>
>>> On Tue, Oct 20, 2009 at 10:17 PM, Dan McGee <dpmcgee at gmail.com> wrote:
>>>
>>>>
>>>> On Tue, Oct 20, 2009 at 9:45 PM, Allan McRae <allan at archlinux.org> wrote:
>>>>> Note how in pass two, foo and bar are no longer in the one line.   Of
>>>>> course, passing ./two.sh "$@" works, but the argument parsing in makepkg
>>>>> clears that, hence the need to save it to ARGLIST.
>>>
>>> It's worth noting that the following works two:
>>>
>>> ./two.sh "$@"
>>>
>>> The reason being that "$@" is special in bash. It actually expands to
>>> the command line quoted as you passed it, with "foo bar" being one
>>> argument. The issue is with the assignment to a single bash variable
>>>
>>
>> The reason that can not be used in makepkg is the option parsing uses
>> "shift" and thus clears the value of $@ as it goes.
>
> I thought I'd craft a witty reply but you beat me with a nicely worded
> one. I happily trimmed the reply chain above to see the failure to
> read. :P

Whoops. I didn't see it mentioned.

I did, however, want to point out the fact that "$@" is special. It's
not just a variable in quotes. It's crazy like that


More information about the pacman-dev mailing list