我必须使用多个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
如何根据已输出的特定错误消息捕获错误消息并对其进行抑制或执行某些操作?
答案 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
:
?扩展到最近执行的退出状态 前台管道。