Jon Mountjoy wrote:
> 
> Are you perhaps (not) using bash?
> Bash accepts for i in ; and sh not.

Bash and sh are identical on Linux systems (/bin/sh is a link to /bin/bash).
Newer (>=2.0) Bashs are more pedantic regarding the syntax, e.g.

   { echo foo ; echo bar }

is not accepted anymore, it has to be

   { echo foo ; echo bar ; }

Similarly,

   for i in ; do echo $i ; done

is illegal now. Wrapping an "if" around it (see Makefile for the binary
distribution) doesn't help as the command line is parsed before it is
evaluated:

   if false ; then for i in ; do echo $i ; done ; fi
   bash: syntax error near unexpected token `;'

Quick hack for the Makefile: Change

   if test "$(PACKAGE_FOO)"; then \
      for i in $(PACKAGE_FOO) ; do \
         ...
      done
   fi

to

   for i in $(PACKAGE_FOO) ThisIsAHack ; do \
      if test $i != ThisIsAHack ; then
         ...
      fi
   done

Hopefully, nothing in the package is called "ThisIsAHack"...   :-)

-- 
Sven Panne                                        Tel.: +49/89/2178-2235
LMU, Institut fuer Informatik                     FAX : +49/89/2178-2211
LFE Programmier- und Modellierungssprachen              Oettingenstr. 67
mailto:[EMAIL PROTECTED]            D-80538 Muenchen
http://www.pms.informatik.uni-muenchen.de/mitarbeiter/panne
  • ; Jon Mountjoy

Reply via email to