I need to create an array with directories and then inereate it, creating one more array in each step which will include all files found via 'find' command for each derictory and also iterate this array. I was trying to do something like this:
declare -a arr=(a b c) ;\
for key in "$${arr[@]}" ; do \
...
done\
but it does not work. Even this gets error:
all:
declare -a array=(a b c) ;\
echo "$${array[1]}" \
gets error:
/bin/sh: 1: Syntax error: "(" unexpected
Makefile:4: recipe for target 'gg' failed
make: *** [gg] Error 2
This is because make always invokes /bin/sh
(POSIX shell) when it runs recipes unless you tell it differently. The syntax you're using is specific to the /bin/bash
shell and not available in /bin/sh
.
If you want to run your recipes using /bin/bash
you have to specifically tell make to do that by adding this to your makefile:
SHELL := /bin/bash
See For loop in makefile not working for another answer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With