При запуске ssh -T git@github.com
:
1
ожидается только 2 возвращаемых значения: пользователь аутентифицирован, но не может открыть оболочку с помощью GitHub 255
: пользователь не аутентифицирован
Вы никогда не получите код возврата 0 по той же причине, что и описанная @VonC.Это означает, что вы не можете использовать забавные сокращения bash для проверки кодов возврата, как, например, проверки логики короткого замыкания - вы должны быть явно записаны и проверены $?
.
Вот сценарий оболочки, который я использую дляпроверьте, авторизован ли я на GitHub:
function github-authenticated() {
# Attempt to ssh to GitHub
ssh -T git@github.com &>/dev/null
RET=$?
if [ $RET == 1 ]; then
# user is authenticated, but fails to open a shell with GitHub
return 0
elif [ $RET == 255 ]; then
# user is not authenticated
return 1
else
echo "unknown exit code in attempt to ssh into git@github.com"
fi
return 2
}
Вы можете использовать его случайно из командной строки следующим образом:
github-authenticated && echo good
или более формально в скриптекак:
if github-authenticated; then
echo "good"
else
echo "bad"
fi