2015-04-15 3 views
0

Я использую Дженкинс, так IAM пытается выполнить ниже кода «выполнения оболочки»синтаксис сценария оболочки Дженкинс

Ниже сценарий:

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 

В 'выполнить shell ', iam, как показано ниже, но получение синтаксических ошибок при попытке построения:

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' 

Здесь ошибка синтаксиса:

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

Так скажите, пожалуйста, что изменить?

ответ

2

Ожидаются синтаксические ошибки, поскольку отдельные команды в дереве else не разделены. Как должна ваша оболочка (bash, я полагаю) знать, где начинается или заканчивается команда? Попробуйте следующее:

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' 

В качестве альтернативы, вы можете также разделить их && вместо ; и тем самым выполнить только следующую команду, когда бывшие один удался.

+0

Ответа на этот вопрос Ralf (для этого я не сделаю другого конкурирующего ответа). В качестве альтернативы вы также можете рассмотреть синтаксис «здесь doc», описанный во втором ответе на этот вопрос: http://stackoverflow.com/questions/305035/how-to-use-ssh-to-run-shell-script -он-а-дистанционная-машина? LQ = 1 – Slav

Смежные вопросы