为什么我的git没有自动更新Expect脚本?

我想创build一个脚本来更新我所有的GitHub仓库。

我只需要input我的用户名和密码,脚本将通过一个存储库列表,调用git push并通过补充的Expect脚本提供必要的信息。

这是我的bash脚本:

 #! /bin/bash echo "Updating GitHub projects from project_list.txt." echo read -p "GitHub username: " un read -p "GitHub password: " -s pw echo echo while read line do eval dir=$line echo "Updating:" $dir"." cd $dir $SF/githubexpect $un $pw echo echo done < $SF/project_list.txt 

$SF是一个全局环境variables,包含我的脚本文件夹的绝对path。

这是githubexpect脚本:

 #! /usr/bin/expect set un [lindex $argv 0] set pw [lindex $argv 1] spawn git push expect "Username" send $un\n expect "Password" send $pw\n 

当我运行bash脚本时,事情按预期进行。

  1. 我被提示input信息。
  2. 脚本成功启动并继续读取project_list.txt文件。
  3. 一旦它发现自己在存储库的目录中,它会调用githubexpect脚本并正确传递信息(我已经testing过)。
  4. githubexpect正确的产生了git push
  5. 它被提示input(我在控制台中看到了这个)。
  6. 它确实提供了我的信息(同样,我也看到了这一点)。
  7. 然后它继续到下一个存储库,就像什么都没有发生。 < – 错误!

我怀疑githubexpect脚本可能会产生相对于自身的git push ,而不是当前脚本正在执行的目录,所以git甚至没有find存储库。 这可能是错误的,尽pipe我的githubexpect驻留的脚本文件夹也是一个仓库。

Solutions Collecting From Web of "为什么我的git没有自动更新Expect脚本?"