>I have no longer problem with the script
>for REP in `find -type d -name include` ; do
>sed "s/easyphp/easyphp14/g" < $REP/common.inc.php > $REP/commonlucas.inc.php
>sed "s/\/tata\//\/tata-conseil\//g" < $REP/commonlucas.inc.php >
>$REP/common.inc.php
>rm -f $REP/commonlucas.inc.php
>done
>when I put it into a .sh file and execute it.
>But when trying to make a makefile see it with target lucas, it doesn t work
>:
>lucas:
> for REP in `find -type d -name include` ; do
> sed "s/easyphp/easyphp14/g" < $REP/common.inc.php >
>$REP/commonlucas.inc.php
> sed "s/\/tata\//\/tata-conseil\//g" < $REP/commonlucas.inc.php >
>$REP/common.inc.php
> rm -f $REP/commonlucas.inc.php
> done
>I make :
>$>make lucas
>In this cas I have a syntax error : end of file unexpected (expecting done)
>make : *** [lucas] Error 2
>my make in, under cygwin under windows.
"make" excutes the actions (indented lines) one line at a time, calling
$(SHELL) -ce "action line"
for each of it.
So, you have to make a one-liner of the for...do..done, by escaping the
newlines with backslashes (causing make to omit the backslash/newline),
and inserting appropriate ";" to tell the shell where to separate commands.
Also, in order to use shell variables you have to double the "$"s,
to cause "make" to not interpret it, but pass a single "$" to the shell.
Otherwise $REP would be replaced by the contents of the make variable R
followed by EP. Try:
lucas:
for REP in `find -type d -name include` ; do \
sed "s/easyphp/easyphp14/g" < $$REP/common.inc.php \
> $$REP/commonlucas.inc.php ; \
sed "s/\/tata\//\/tata-conseil\//g" < $$REP/commonlucas.inc.php \
> $$REP/common.inc.php ; \
rm -f $$REP/commonlucas.inc.php ; \
done
Is a bit ugly, yes.
Alternatively, put the code into a shell script, and simply call that.
--