2016-11-07 10 views
2

我必須使用多個git repo,我希望能夠將它們全部切換到某個分支。因此,與我有限的bash腳本的知識到目前爲止,我做出這樣的:如何響應bashrc函數的git輸出?

# 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 
} 

但是,讓我們說,我想改變這一切回購的某一分支,但他們中的一些不具有特定分支我想換。我會得到一個錯誤這樣的:

error: pathspec 'test' did not match any file(s) known to git.

這發生在我運行:

switchall -b test 

我如何捕獲錯誤消息和抑制它或者做一些基於已此特定錯誤信息輸出?

回答

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 bashSpecial Parameters部分:

? Expands to the exit status of the most recently executed foreground pipeline.

+0

這有助於但有也迴應的方式一個特定的消息? Git可能會爲不存在的分支引發錯誤,未更改等等。 –

+0

通過「回覆特定消息」,你是什麼人?如果您仍然希望'git'打印錯誤消息,只需刪除'2>/dev/null'部分。 –

+0

它需要是不同的響應,匹配某些錯誤,而不僅僅是一個通用的錯誤處理程序。 –