Makefile: if/else einbinden

Blackbenji

Lieutenant
Registriert
Nov. 2009
Beiträge
565
Hallo zusammen,

ich schreibe gerade an einem Makefile

Code:
upload-files:
./upload-setups.pl -files=${files} -base=${base} -i=${i} -debug
	echo "Umgebung ${base}" > send-files.txt
	echo "Datum $(TODAY) | Uhrzeit $(ZEIT)" >> send-files.txt
	cat ${files} >> send-files.txt
	echo -e "From: blabla\nSubject: Änderung\nTo: blabla" | cat - send-files.txt | /usr/sbin/sendmail blabla
	rm -rf send-files.txt

Nun möchte ich aber nach ${base} unterscheiden können. Dafür würde ich if/else/fi nutzen wollen:

Im Makefile ist zu beginn:

Code:
#!/bin/bash

gesetzt

Code:
	if [ "${base}" = "blabla" ]; then
		echo "blabla, keine Mail"
	else
		echo "Umgebung ${base}" > send-files.txt
		echo "Datum $(TODAY) | Uhrzeit $(ZEIT)" >> send-files.txt
		cat ${files} >> send-files.txt
		echo -e "From: blabla\nSubject: Änderung\nTo: blabla" | cat - send-files.txt | /usr/sbin/sendmail blabla
		rm -rf send-files.txt
	fi

Als Fehlermeldung erhalte ich:
Code:
/bin/sh: -c: line 1: syntax error: unexpected end of file
make: *** [upload-files] Fehler 2

in dem Makefile sind noch weitere Make-Targets.

Hat jemand eine Idee?
 
Makefiles sind keine Bash-Skripte. Du vermischst hier zwei verschiedene Syntaxen. Hier steht was über if-Statements in make.
 
danke,

ich versteh aber die syntax auf mein beispiel bezogen, nicht so ganz:

Code:
	ifeq (${base},-T)
		echo "-T, keine Mail"
	else
		echo "ok"
	endif

ifeq (-T,-T)
/bin/sh: -c: line 0: syntax error near unexpected token `-T,'
/bin/sh: -c: line 0: `ifeq (-T,(-T))'
make: *** [upload-files] Fehler 2
 
Was du da hast ist kein Makefile. Das ist das Problem. Ende der Geschichte.
 
hallo,

ende der geschichte würde ich es nicht nenne wollen, weil mir ist immer noch nicht geholfen.

das ist mein Makefile
Code:
base=-T
i=HEAD
suk=no-suk
rsc=no-rsc
file=no-file
files=no-files

upload-files:
	./upload-setups.pl -files=${files} -base=${base} -i=${i} -debug
	ifeq (${base},-T)
		echo "-T, keine Mail"
	else
		echo "Mail"
	endif

Aufruf erfolgt über:

Code:
make upload-files base=-T files=bla.txt i=blabla

Output:
Code:
ifeq (-T,-T)
/bin/sh: -c: line 0: syntax error near unexpected token `-T,-T'
/bin/sh: -c: line 0: `ifeq (-T,-T)'
make: *** [upload-files] Fehler 2

Kann mir dabei bitte einer helfen?
 
Nur so als Idee, ist nicht getestet!
Du könntest dir ein Skript erstellen: z.B.: meinSkript
Code:
#!/bin/bash
if [ ${1} = "-T" ]
  then
    echo "-T, keine Mail"
  else
    echo "Mail"
fi

das könntest du dann im makefile aufrufen:
Code:
 ...
 upload-files:
   ./upload-setups.pl -files=${files} -base=${base} -i=${i} -debug
   meinSkript ${base}
 
Zurück
Oben