2015-04-15 6 views
0

J'utilise jenkins, si iam tente d'exécuter ci-dessous le code dans 'exécuter shell'de syntaxe dans le script shell jenkins

Ci-dessous le script:

ssh [email protected] 
cd /myfolder 
pwd 

if [ ! -d myproj ]; then 
    git clone http://prod-server/bbb/myproj.git 
else 
    cd myproj 
    pwd 
    git pull 
fi 

Dans 'exécuter shell ', iam essayant comme ci-dessous mais obtenant des erreurs de syntaxe tout en essayant de construire:

ssh prod-server 'cd /myfolder && pwd && if [ ! -d myproj ]; then git clone http://prod-server/bbb/myproj.git else cd myproj pwd git pull fi' 

Voici l'erreur de syntaxe:

Syntax error: end of file unexpected (expecting "fi") 

Alors, s'il vous plaît me dire quoi modifier?

Répondre

2

Les erreurs de syntaxe sont à prévoir, car les commandes individuelles dans l'arbre else ne sont pas vraiment séparées. Comment votre shell (bash je présume) sait où une commande commence ou finit? Essayez les éléments suivants:

ssh prod-server 'cd /myfolder && pwd && if [ ! -d myproj ]; then git clone http://prod-server/bbb/myproj.git else cd myproj; pwd; git pull; fi' 

Vous pouvez également les séparer par && au lieu de ; et donc d'exécuter la commande suivante que lorsque l'ancien a réussi.

+0

Réponse de Ralf est correct (donc je ne vais pas faire une autre réponse concurrente). Comme alternative, vous pouvez également envisager une syntaxe "here doc", décrite dans la deuxième réponse à cette question: http://stackoverflow.com/questions/305035/how-to-use-ssh-to-run-shell-script -on-a-remote-machine? lq = 1 – Slav