GIT,检查命令的返回码(bash 脚本)

tha*_*hgr 4 git bash

我正在处理一个大项目,它被分成许多存储库。

我正在考虑制作一个小的 bash 脚本,它在每个存储库中迭代和检出特定的远程或本地分支或标签,如果由于分支不存在而失败,则有标签/存储库的第二个选项来检出。

IE

#!/bin/bash
printf "\n ### Checkout Tag ### \n \n"

for repo in rep1 rep2 ...
do

checkout $1 
(check if that fails somehow, and if it fails, checkout $2)

done

printf "\n ### DONE ### \n \n"

exit 0
Run Code Online (Sandbox Code Playgroud)

或者,您有其他想法吗?

谢谢

Eug*_*sca 5

#!/bin/bash
printf "\n ### Checkout Tag ### \n \n"

for repo in rep1 rep2 ... ; do
    checkout $1
    if [[ $? != 0 ]]; then
        checkout $2
        if [[ $? != 0 ]]; then
            echo "Failed to checkout $1 and $2"
        fi
    fi
done

printf "\n ### DONE ### \n \n"
exit 0
Run Code Online (Sandbox Code Playgroud)


Ram*_*mon 5

您无需手动检查返回代码。只需将命令连接起来||就可以了

#!/bin/bash
printf "\n ### Checkout Tag ### \n \n"

for repo in rep1 rep2 ...
do
    checkout $1 || checkout $2 || echo "Error"
done

printf "\n ### DONE ### \n \n"

exit 0
Run Code Online (Sandbox Code Playgroud)

||仅当前一个失败时才会执行以下命令。将其视为“命令之一必须成功”。如果第一个成功,您就可以了,不必检查以下内容。

&&仅当前一个成功时才会执行以下命令。将其视为“所有命令都必须成功”。如果第一个失败,您已经迷路了,不必检查以下内容。

在我看来,这个解决方案比公认的答案更清晰、更容易。