首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检测bash中未成功的git认证?

如何检测bash中未成功的git认证?
EN

Stack Overflow用户
提问于 2021-02-11 03:06:01
回答 1查看 175关注 0票数 0

在我的bash脚本中,一个私有存储库正在被克隆,它会提示输入用户名和密码。问题是,即使输入了错误的用户名或密码,git身份验证失败- remote: Invalid username or password,脚本继续忽略它,并希望git用户名和密码读取提示循环运行,直到git身份验证成功。换句话说,如果输入了错误的用户名或密码,bash应该检测到它,并且读取提示应该循环地重新运行,直到git身份验证成功为止。

代码语言:javascript
运行
复制
#!/usr/bin/env bash

# something ....

read -e -p "Input your github username : " username
read -e -p "Input your github password : " password
git clone https://"$username":"$password"@github.com/"$username"/repo

# something ...

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-11 03:11:26

Git通常不会创建认证失败的目录。检查文件夹是否存在,如果不存在则退出:

代码语言:javascript
运行
复制
test -d ./repo || { echo 'Dir does not exist'; exit 1; };

但在此之前,git进程应该已经以非零退出代码退出,因此您可以这样做:

代码语言:javascript
运行
复制
git clone "https://…@…/path/to/repo" || exit 1;

如果您想一直重试,直到命令成功,请使用循环:

代码语言:javascript
运行
复制
read -e -p 'Input your github username: ' username
read -e -p 'Input your github password: ' password
while ! git clone "https://…@…/path/to/repo"; do
  echo 'Error cloning, please retry' >&2;
  read -e -p 'Input your github username: ' username
  read -e -p 'Input your github password: ' password
done

您可能还会对How to get a password from a shell script without echoing感兴趣,因为它可以在输入密码时防止肩部冲浪。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66143414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档