On Tue, 2018-10-02 at 15:20 +0000, F L wrote: > Thank you very much Paul and Philip. I still need to read what you > pointed out. > > What I want is very straightforward. during make/build process, I > want to run a shell command to extract two numbers from two different > files. If they are same(or different), then I do something. > > That is why my prototype uses echo to get the number? > > $(eval v1=$(shell sh -c "echo 1"))
OK, but you don't need to set make variables, or use make shell functions. A recipe is run by the shell already and the shell is a complete programming language (more complete than makefile language!) so you can just use shell commands directly and set shell variables. Also, $(shell sh -c "echo 1") is redundant because the make shell function starts a shell, then you are asking that shell to run another shell ("sh -c") and asking that second shell to run the "echo 1" command. You can get rid of one shell by just saying: $(shell echo 1) rather than starting a new shell with "sh -c". But it's simpler by far (IMO) to simply use the recipe, which is already in a shell, and write shell syntax: testrule: v1=`echo 1`; \ v2=`echo 2`; \ if [ "$$v1" = "$$v2" ]; then echo "v1 == v2"; fi _______________________________________________ Help-make mailing list Help-make@gnu.org https://lists.gnu.org/mailman/listinfo/help-make