In <[EMAIL PROTECTED]>, Max Khon wrote:
> hi, there!
>
> On Mon, 6 Mar 2000, Martin Cracauer wrote:
>
> > I just checked POSIX 1003.2.
> >
> > for name [ in word ]
> > do
> > compound-list
> > done
> >
> > "First, the list of words following 'in' shall be expanded to generate
> > a list of items." [...] "If no items result from the expansion, the
> > compound-list shall not be executed."
> >
> > <nothing> is not a word at all, so it can't be expanded, so I think
> > bash is corrent to complain about a syntax error.
> >
> > It is clear, though, that your (John) example "variable expansion to
> > nothing" is not an error and both shells do it right.
>
> A lot of stuff in /usr/ports/Mk/bsd.port.mk depends on current /bin/sh
> behaviour ("do nothing" instead of "complain and bail out").
> I am the original poster and faced this problem when tried to port FreeBSD
> Ports subsystem to Solaris and Linux.
Hm,
for s in ${SUBDIR}; do
Well, the trick here is that ${SUBDIR} is expanded by make, not sh, so
sh can end up with nothing.
Max, I apologize, your point is valid and I commented without seeing
your original message.
OK, I think we should leave the non-word syntax as valid in FreeBSD,
since it makes the ports case more elegant and POSIX make it that
clear that sh must raise an error.
Max, I think the best way to port the ports subsystem is to take
FreeBSD's sh with you and point ${SH} to it, not the system's native
sh. Many native sh's have other things they do different from
FreeBSD's sh and bash (i.e. reaction on SIGINT, see
http://www.cons.org/cracauer/sigint.html), so I think this will
shorten your path considerably.
Martin
--
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Martin Cracauer <[EMAIL PROTECTED]> http://www.cons.org/cracauer/
Tel.: (private) +4940 5221829 Fax.: (private) +4940 5228536
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message