I have the following code inside a Makefile:
# Root Path
echo "What is the root directory of your webserver? Eg. ~/Server/htdocs" ;
read root_path ;
echo $root_path ;
if [ ! -d $root_path ] ; then \
echo "Error: Could not find that location!" ; exit 1 ; \
fi
However when typing anything (eg. “asd”) this is what gets returned:
What is the root directory of your webserver? Eg. ~/Server/htdocs
asd
oot_path
Error: Could not find that location!
When what I would expect to see would be:
What is the root directory of your webserver? Eg. ~/Server/htdocs
asd
asd
Error: Could not find that location!
How do I fix this???
The immediate problem is that Make itself interprets the
$differently than the shell does. Try:The double
$$escapes the$for Make, so it passes the single$through to the shell. Note also that you will need to use\line continuations so that the whole sequence is executed as one shell script, otherwise Make will spawn a new shell for each line. That means that anything youreadwill disappear as soon as its shell exits.I would also say that in general, prompting for interactive input from a Makefile is uncommon. You might be better off using a command line switch to indicate the web server root directory.