help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problem with shell regex and Make


From: Bob Proulx
Subject: Re: Problem with shell regex and Make
Date: Sun, 14 Feb 2010 11:21:35 -0700
User-agent: Mutt/1.5.18 (2008-05-17)

address@hidden wrote:
> This not not work on GNU Make 3.81 :

The problem is that you are using shell syntax specific to bash, ksh,
other shells but isn't in /bin/sh.  In order to use syntax that isn't
portable shell syntax then you need to select a different shell.  Or
you need to use portable syntax available in /bin/sh only.

> all:
>       if [[ "mystring" =~ "string" ]]; \
>       then echo "found"; \
>       else echo "not found"; \
>       fi
> 
> 
> output :
> /bin/sh: [[: not found

The problem is that you are using syntax that isn't supported by
/bin/sh.  You have probably become used to programming in bash, ksh,
or some other new shell that has that syntax.  But make uses /bin/sh
by default and that shell doesn't support the [[ ... ]] syntax.

See this section of the manual where it discusses how your execution
shell is selected.

  http://www.gnu.org/software/make/manual/make.html#Execution

  The program used as the shell is taken from the variable SHELL. If
  this variable is not set in your makefile, the program /bin/sh is used
  as the shell.

I recommend using portable shell syntax in your Makefile.
Alternatively you can specify your shell to be "SHELL = /bin/bash" or
whatever but doing so may make it a hardship for anyone else to
compile your code on their system if their system is different from
yours.

Bob




reply via email to

[Prev in Thread] Current Thread [Next in Thread]