如何响应bashrc函数的git输出?

时间:2016-11-07 09:28:09

标签: git bash shell github

我必须使用多个git repo,我希望能够将它们全部切换到某个分支。到目前为止,由于我对bash脚本的了解有限,我做了这个:

# Git switch all repos to a given branch.
switchall() {
    # Reset OPTIND so we can call this function multiple times.
    local OPTIND

    while getopts "b:" OPTION
        do
            case $OPTION in
                b)
                    echo "Switching all GIT repo's to: $OPTARG"
                    for d in ~/git/*/ 
                    do
                        ( cd $d && git checkout $OPTARG )
                    done
                    ;;
            esac
        done
}

但是,假设我想将所有repo更改为某个分支,但其中一些没有我想要更改的特定分支。我会收到这样的错误:

  

错误:pathspec'test'与git已知的任何文件都不匹配。

当我跑步时会发生这种情况:

switchall -b test

如何根据已输出的特定错误消息捕获错误消息并对其进行抑制或执行某些操作?

1 个答案:

答案 0 :(得分:2)

类似的东西:

( cd $d && git checkout $OPTARG 2>/dev/null )
if ! [ $? -eq 0 ]
then
    echo things went wrong
fi

甚至:

if ! ( cd $d && git checkout $OPTARG 2>/dev/null )
then
    echo things went wrong
fi

位于man bash部分下的Special Parameters

  

?扩展到最近执行的退出状态   前台管道。