在bash脚本中运行一个git commit for循环多个repos

时间:2015-12-12 20:08:29

标签: git bash

我正在尝试编写一个脚本来使我的批量git协作更容易,一次推送/拉/或提交多个git项目。

我在多个网站上工作,我想立即为所有网站提取所有当前更改。

这就是我所拥有的。

#!/bin/bash -e

REPOS=(
/Users/me/repo1
/Users/me/repo2
/Users/me/repo3
) 

echo push, pull or commit?

read input

if [$input -eq "commit"]
then
    for i in “${REPOS[@]}”
    do
        cd $i
        git add . -A
        git commit -m "auto commit backup point"
        echo "Moving to Next REPO...
         "
        sleep 2
    done 

else 
for i in “${REPOS[@]}”
do
    cd $i
    git $input 
    echo "Moving to Next REPO...
     "
    sleep 2
    done 
fi

现在,当脚本提示我输入时,推或拉工作正常(有点),脚本会遍历所有站点并相应地拉或推。

但是当我回复“commit”时,脚本会遍历每个仓库,但是提交工作不正常。提交消息提示在vi中打开,这不是首选,并且提交不会放置。如果我导航到任何存储库,仍然会进行分阶段更改。

任何输入都将不胜感激。

1 个答案:

答案 0 :(得分:1)

if [$input -eq "commit"]缺少空间。将其重写为if [ $input -eq "commit" ]。否则它进入else条件并执行git $input,其中input = commit。

哦,是的,-eq是整数,应该是if [ $input = "commit" ]