#git #shell #githooks
#git #оболочка #githooks
Вопрос:
при следующем получении перехвата после отправки я получаю ошибку после отправки в репозиторий, remote: hooks/post-receive:: syntax error, unexpected $undefined, expecting keyword_do or '{' or '('
опубликуйте сценарий получения следующим образом,
#!bin/bash
while read oldrev newrev ref
do
ssh user1@ip -pPassword 'path/to/the/shell.sh'
end
в этом случае на моем удаленном сервере включен paswd
, я попробовал следующим образом
#!bin/bash
while read oldrev newrev ref do
ssh user1@ip -pPassword 'path/to/the/shell.sh'
end
#!bin/bash
while read oldrev newrev ref
do
(ssh user1@ip -pPassword 'path/to/the/shell.sh');
end
Комментарии:
1. Протестируйте свой скрипт post-receive вручную, запустив его самостоятельно. При необходимости предоставьте ему пример ввода, хотя при такого рода синтаксической ошибке вы обычно получите синтаксическую ошибку до того, как она попытается что-либо прочитать.
2. @Sadzone Это почти наверняка сообщение об ошибке от вашего
shell.sh
, поэтому вы должны показать его нам.
Ответ №1:
Для while
цикла в bash вы можете либо:
#!/bin/bash
while read oldrev newrev ref;do
echo $read $oldrev $newrev $ref
done
или
#!/bin/bash
while read oldrev newrev ref
do
echo $read $oldrev $newrev $ref
done
или
#!/bin/bash
while read oldrev newrev rev;do echo $read $oldrev $newrev $ref;done
Я не уверен, что ssh
часть верна, но я не думаю, что это
необходимо.
Комментарии:
1. ни один из них не сработал для моего сценария, я получаю ту же ошибку, включая
syntax error, unexpected end-of-input, expecting keyword_end
Ответ №2:
Я не уверен, что часть ssh правильная
На самом деле, ssh может работать, но является частью проблемы:
- проверьте,
ssh -T user1@ip -pPassword
работает ли это при выполнении с сервера, на котором находится перехват после получения - проверьте, что это работает беззвучно, что означает, что пользователь1
.bashrc
или.profile
не передает эхо-сигнал на кучу строк, которые затем могут помешать выполнению перехвата.