user1496062
user1496062

Reputation: 1317

Shell conditional in makefile

Cant get this to work , tried everything for the conditional [] bash brackets quotes etc

The if $$? != "0" never matches but the $$? is non zero at times. Any ideas ?

test: testdrivers
-@rc=0; \
   for file in $(TSTFILES); do  \
     ./$$file; \
     if  $$? != "0" ; then  \
     echo test fail;\
                 rc=`expr $$rc + 1` ;\
     fi \
    done; \
  echo; echo "Tests failed: $$rc"

Upvotes: 13

Views: 34650

Answers (2)

Manbir Singh Yadav
Manbir Singh Yadav

Reputation: 41

Use below one as an example:

SHELL=/bin/bash
abc=all 
all:
    @ echo $(SHELL)
    @if [ $@ == $(abc) ]; then echo hi; fi;
    @echo done

output will be:

/bin/bash
hi
done

Upvotes: 4

MadScientist
MadScientist

Reputation: 100856

The right syntax for a numeric comparison in shell scripting is:

if [ $$? -ne 0 ]; then

Be sure you have spaces BEFORE and AFTER the square brackets. They cannot be in the same word as the arguments.

Also you're missing a semicolon after the fi:

    fi; \
done; \

Upvotes: 19

Related Questions