2016-10-30 6 views
2

J'essaie de passer une variable à rollup.js dans bash. Je ne sais pas si c'est un problème de bash, ou un problème avec rollup.js, parce que je n'ai pas l'expérience de bash. Mais peut-être que quelqu'un peut me aider ici ...Passer des variables bash à rollup.js

Voici mon entrée terminal:

MY_INPUT="/path to my/input.js" 
MY_OUTPUT="/path to my/output.js" 
rollup --input $MY_INPUT --output $MY_OUTPUT 

Rollup jette l'erreur:

rollup can only bundle one file at a time

Je traqué le problème à des espaces à l'intérieur du chemin .

Cependant, ces deux travaux:

rollup --input "/path to my/input.js" --output "/path to my/output.js" 
rollup --input /path\ to\ my/input.js --output /path\ to\ my/output.js 

Le problème se produit uniquement lorsque j'utilise des variables. J'ai aussi essayé d'échapper les variables au lieu de les mettre entre parenthèses, mais ça n'a pas marché non plus.

Existe-t-il un moyen de faire en sorte que les variables se comportent comme je le souhaite, est-ce un problème que rollup.js doit gérer, ou est-il simplement impossible d'utiliser des chemins avec des espaces des variables?

+1

Vous pouvez activer l'option bash set + x pour activer la journalisation bash pour voir ce qui se passe pour déboguer cela plus .. –

Répondre

4

Vous devez citer les variables que vous les transmettez à rollup:

rollup --input "$MY_INPUT" --ouput "$MY_OUTPUT" 

C'est parce que ces variables contiennent des espaces, que le shell interprète comme plusieurs arguments. En citant des guillemets doubles, les valeurs seront interprétées comme une seule chaîne.

Notez que si vous copiez-collez vos scripts Bash sur http://www.shellcheck.net/#, cela peut signaler des problèmes comme ceux-ci.

+0

Merci, je pensais que j'avais essayé cela. Mais essayé encore et ça marche! Je vais l'accepter, dès que la limite de temps est écoulée. :) – Afterlame

+0

Et un remerciement spécial pour avoir souligné le lien vers shellcheck, ne savait pas à ce sujet. – Afterlame