我正在使用bash脚本在git中克隆我的所有存储库。我所有的存储库都在一个文件中。它一一调用我的期望脚本来读取存储库,该脚本生成git clone。我使用的是Expect,因为它在每次克隆时都会要求我输入密码,因此Expect可以为其提供密码。 当我的密码正确时,它可以正常工作。但是,如果密码错误,我想转到我的bash脚本并执行某些操作,然后终止bash脚本。
Bash脚本调用需要这样的脚本
expect ~/expect_script.exp
我的期望脚本
#!/usr/bin/expect -f
puts "## Starting the expect script... ##"
spawn git clone ssh://$GIT_CENTRAL_PATH/web/$sub_dir_type/$repository
expect "*?assword: "
send $PASS\r
expect {
-re “remote: Counting objects:*?” {send “echo running\r”}
-re “Permission denied*?” {send “password denied”}
}
如果密码正确,我想git启动对对象进行计数并克隆存储库。如果密码错误,我希望bash脚本执行某些操作并停止。您能帮我解决这个问题吗?如果您不了解我想要实现的目标,请告诉我。
答案 0 :(得分:0)
我将使用“成功/失败”退出状态来表示预期结果。
expect {
"Permission denied*?” {exit 1}
"remote: Counting objects:*?"
}
set timeout -1
expect eof
exit 0
然后,shell脚本如下所示:
if expect ~/expect_script.ext; then
echo "repo cloned"
else
echo "password denied"
fi
一些注意事项: