Le fichier Makefile Pourquoi la commande de lecture pas la lecture de l'entrée de l'utilisateur?
J'ai le code suivant à l'intérieur d'un 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
Cependant lors de la saisie de quelque chose (par exemple. "tsa") c'est ce qui est retournée:
What is the root directory of your webserver? Eg. ~/Server/htdocs
asd
oot_path
Error: Could not find that location!
Quand ce que je m'attends à voir serait:
What is the root directory of your webserver? Eg. ~/Server/htdocs
asd
asd
Error: Could not find that location!
Comment puis-je résoudre ce problème???
Le vote pour cette question, parce que je pense que cela vient probablement jusqu'à plusieurs reprises, mais voir ce que Greg, Jean et Daenyth dire sur le fait de faire ceci: l'axe de meurtre qui maintient votre code pas comme il.
OriginalL'auteur balupton | 2010-09-18
Vous devez vous connecter pour publier un commentaire.
Le problème immédiat, c'est que lui-même interprète le
$
différemment que dans le shell. Essayez:Le double
$$
échappe à l'$
pour Faire, de sorte qu'il passe le seul$
grâce à la coque. Notez également que vous aurez besoin d'utiliser\
ligne de poursuites, de sorte que l'ensemble de la séquence est exécutée comme un script shell, sinon Faire se frayer un nouveau shell pour chaque ligne. Cela signifie que tout ce que vousread
disparaît dès que sa coquille sorties.Je voudrais aussi dire que, en général, d'une demande d'interaction à partir d'un fichier Makefile est rare. Vous pourriez être mieux à l'aide d'un commutateur de ligne de commande pour indiquer le répertoire racine du serveur web.
make
.J'avais s/rare/une abomination/. C'est ce que
configure
scripts et de les rendre variables sont pourMerci! J'ai toujours pensé que les Makefiles étaient tout simplement glorifié scripts shell, mais cela montre certainement le contraire. Aura certainement à reconsidérer mon cas d'utilisation avec eux. @Daenyth, qu'entendez-vous par les scripts de configuration? Sont-ils quelque chose de spécial???
Plaine rendre a de la difficulté à affronter les choses qui changent à travers les plates-formes et installations. En particulier l'original
make
qui était plutôt moins puissant que GNU make. Une convention est née à écrire des scripts de configuration qui permettrait de gérer la plate-forme d'installation spécifique. Que les outils pour l'écriture de ces fichiers développés. Vous pouvez regarderautoconf
, si vous voulez, mais il est largement considéré comme un cauchemar. Si vous avez seulement un peu de cibles et/ou un peu de plate-forme spécifique de configuration, il y a d'autres manières de traiter ces questions.Cool merci. J'ai déménagé dans un php script d'installation qui s'exécute sur la ligne de commande - finira par avoir une page web interface. Comme c'est pour la configuration d'une application web. Autoconf semble trop pour cela.
OriginalL'auteur Greg Hewgill