J'utilise les commandes suivantes dans mon dans les commandes im obtenir une éventuelle des valeurs
et supprimer le tableau Je veux exécuter cette commande dans mon terminal et que j'utilise le suivant P> et j'ai eu une erreur p> Qu'est-ce que je manque ici? p> Si je cours Seul p> i got, qui fonctionne p> qui fonctionne sur Mac mais dans Windows, il est strong> pas ... p> p> p> Makefile code>
[] code> de celui-ci, p>
FZR fournit des applications | (STI] , $ (STI [ $ (apps))) | $ (applications) code> p>
FZR fournit des applications code> p>
[app1 app2 app3] code> < / p>
apps: = $ (poste] , $ (apps)))) code> p>
3 Réponses :
Les commandes valides dans un maquefile ne sont pas valides sur l'invite du terminal.
Si vous souhaitez supprimer les supports carrés de début et de fuite dans un script Bash, essayez P>
apps := $(shell fzr provide apps | sed 's/^\[//;s/\]$$//')
Merci, je vais l'essayer et vous le faire savoir :), au fait, je téléchargea Windows à partir d'ici, gnuwin32.sourceforge.net/packages/make.htm est compatible?
Je n'ai aucun moyen de le tester mais la page de couverture dit que c'est GNU.
Si je veux utiliser cela dans Makefile, FZR Fournissez des applications | SED 'S / ^ \ [//; S / \] $ //' CODE> Cela devrait fonctionner?
J'ai mis à jour ma réponse pour couvrir cela il y a environ une minute (^:
Merci quand je l'essaie dans mon makefile, je reçois Commande inconnue SED code> :(
Le fichier Makefile code> ne peut évidemment pas utiliser de commandes qui ne sont pas installées sur votre boîte Windows. Il n'est pas difficile de trouver un fichier
SED code> s'il est peut-être plus simple de revenir au
$ (STI ...) code> si vous souhaitez éviter de tirer beaucoup de dépendances. Il n'y a pas de moyen sain de créer un
Makefile code> portable entre Windows et les ordinateurs réels, cependant.
Voici une version plus courte du script que @triplee a affiché: ceci supprime [ code> ou
] code> caractères où ils apparaissent dans la chaîne d'entrée. p> p>
dans votre maquillage, dans la coquille, (je suppose une coquille Bash), Donc, dans ce cas, vous devez faire quelque chose comme: p> $ (applications) code> se développe à la valeur de la variable Makefile
apps code>. Ceci est fait au moment de la lecture de Makefile, et la valeur est substituée avant que la commande shell ne soit exécutée (la coque ne voit jamais
$ (applications) code>, mais plutôt voit
Appval1 code>, ou Quelles que soient les applications.
$ (applications) code> signifie la commande exécutée
apps code>. Si vous voulez le valeur de la variable de shell que vous devez utiliser
$ {apps} code>. De plus,
$ (STI) code> est une construction de fabrication et la coquille ne comprend pas non plus que Vous devez remplacer cela avec quelque chose (probablement
sed code>). p>
fzr provide apps | sed "s/[][]//g"
Essayez-vous d'exécuter cette commande sur Windows? Comment avez-vous configuré
bash code> là-bas? Windows a sa propre langue de commande (deux d'entre elles, en fait), mais
bash code> n'est pas l'un d'entre eux par défaut.
@Jennym: Le message d'erreur signifie que vous souhaitez exécuter une commande nommée
apps code>, et il n'y a pas de fichier exécutable de ce nom dans n'importe quel répertoire répertorié dans votre chemin, ni une fonction ou un alias . Dans une première étape, j'éditionnerais la valeur de la cheminée au moment de l'exécution de la commande et vérifiez si ce fichier est présent et que le jeu X-Bit est présent.
@Jennym: Mise à côté de cela, même si leur commande était une commande de ce nom dans le chemin, l'expression
$ (applications) code> est un peu inhabituelle: elle signifie appelez la commande applications / B> et traiter le stdout de cette commande comme nom d'une nouvelle commande, appelé ensuite et reçoit l'entrée du tuyau i> ... Êtes-vous sûr que c'est ce que vous vouliez faire?