2010-10-18 4 views
1

J'ai un simple scriptscript shell exécution de difficulté en référence annuaire

... 
dir=`pwd` 
echo $dir 

cd ./selenium-grid-1.0.8/ 

CMD="ant -Dport=$1 -Dhost=$2 -DhubURL=http://172.16.1.137:4444 -Denvironment="$3"-DseleniumArgs="-firefoxProfileTemplate C:/software/rc_user_ffprofile -multiWindow" launch-remote-control" 
echo $CMD 
$CMD 2>&1 

#End 

Chaque fois que je lance cette commande, je reçois: ./register_rc.sh: ligne 16: C:/logiciel/rc_user_ffprofile: est un répertoire

ce répertoire doit être un argument de l'option -firefoxProfileTemplate. Comment puis-je inclure cela dans cette chaîne sans qu'elle baffing ??

aide

thnx

Répondre

0

On dirait que vous mélangez vos citations vers le haut. Jetez un oeil à la coloration syntaxique que StackOverflow a fait pour vous.

Je vous recommande de générer la variable CMD en plusieurs étapes, et assurez-vous de \ -effacer vos guillemets.

1

Je crois que votre commande doit lire:

CMD="ant -Dport=$1 -Dhost=$2 -DhubURL=http://172.16.1.137:4444 -Denvironment=\"$3\"-DseleniumArgs=\"-firefoxProfileTemplate C:/software/rc_user_ffprofile -multiWindow\" launch-remote-control" 

Les anti-slash sont utilisés pour « échapper » les guillemets.

+0

merci nate. appréciez votre réponse – Afamee

1

Les réponses ici disant pour échapper vos citations sont fausses. Cela va passer ces citations directement à fourmi, je doute que ce soit ce que vous voulez.

Quelle est la raison pour stocker la commande dans une variable? C'est une très mauvaise idée. Pourquoi ne pouvez-vous pas écrire cette commande telle quelle? Si vous souhaitez réaliser la modularité ou la réutilisation du code, définissez une fonction.

Si vous souhaitez afficher les commandes exécutées, utilisez set -x.

+0

Excellent conseil. Voir [BashFAQ/050] (http://mywiki.wooledge.org/BashFAQ/050) pour plus d'informations (applicable aussi à ksh, etc.). –