#!/usr/bin/env bash set -euo pipefail if [ ! -d "$HOME/GitProjects" ]; then mkdir "$HOME/GitProjects" fi WORKPATH="$HOME/GitProjects" readarray -t dirs < <(find "$WORKPATH" -mindepth 1 -maxdepth 1 -type d -printf '%P\n') for dir in "${dirs[@]}"; do # go into GitProjects directory cd "$WORKPATH" # output directory you're currently working on printf "Working on ${dir}\n" # change into that directory cd "$dir" # try to check out master or main branch set +e git checkout -q master 2>/dev/null \ || git checkout -q main 2>/dev/null # check whether the previous two commands failed if [ $? -ne 0 ]; then printf "Couldn't find master or main branch\n" # if all is well, fetch and pull else git fetch --all git pull fi set -e done exit 0