set -x # turn on trace logging
func1() { echo "func1 was in fact run for: $1"; }
# feature needed for +( ) to work; in older bash releases, even needed in PEs
shopt -s extglob
parentDirTgt=foo # the thing you were grepping for in original code
errors_seen=0
while IFS=/ read -r parentDir subDir rest <&3; do
parentDir=${parentDir##+([[:space:]])} # strip leading whitespace
[[ $parentDir = $parentDirTgt ]] || continue
file=$parentDir/$subDir/$rest
case $subDir in
bar1) func1 "$file";;
*) echo "Ignoring change in unrecognized subdirectory $subDir" >&2
errors_seen=1;;
esac
done 3<&0 #<(git diff --diff-filter=dr --name-only origin/main..."$My_branch")
exit "$errors_seen"
c2V0IC14ICMgdHVybiBvbiB0cmFjZSBsb2dnaW5nCgpmdW5jMSgpIHsgZWNobyAiZnVuYzEgd2FzIGluIGZhY3QgcnVuIGZvcjogJDEiOyB9CgojIGZlYXR1cmUgbmVlZGVkIGZvciArKCApIHRvIHdvcms7IGluIG9sZGVyIGJhc2ggcmVsZWFzZXMsIGV2ZW4gbmVlZGVkIGluIFBFcwpzaG9wdCAtcyBleHRnbG9iCgpwYXJlbnREaXJUZ3Q9Zm9vICMgdGhlIHRoaW5nIHlvdSB3ZXJlIGdyZXBwaW5nIGZvciBpbiBvcmlnaW5hbCBjb2RlCgplcnJvcnNfc2Vlbj0wCndoaWxlIElGUz0vIHJlYWQgLXIgcGFyZW50RGlyIHN1YkRpciByZXN0IDwmMzsgZG8KICBwYXJlbnREaXI9JHtwYXJlbnREaXIjIysoW1s6c3BhY2U6XV0pfSAjIHN0cmlwIGxlYWRpbmcgd2hpdGVzcGFjZQogIFtbICRwYXJlbnREaXIgPSAkcGFyZW50RGlyVGd0IF1dIHx8IGNvbnRpbnVlCiAgZmlsZT0kcGFyZW50RGlyLyRzdWJEaXIvJHJlc3QKICBjYXNlICRzdWJEaXIgaW4KICAgIGJhcjEpIGZ1bmMxICIkZmlsZSI7OyAgICAgIAogICAgKikgICAgZWNobyAiSWdub3JpbmcgY2hhbmdlIGluIHVucmVjb2duaXplZCBzdWJkaXJlY3RvcnkgJHN1YkRpciIgPiYyCiAgICAgICAgICBlcnJvcnNfc2Vlbj0xOzsKICBlc2FjCmRvbmUgMzwmMCAjPChnaXQgZGlmZiAtLWRpZmYtZmlsdGVyPWRyIC0tbmFtZS1vbmx5IG9yaWdpbi9tYWluLi4uIiRNeV9icmFuY2giKQoKZXhpdCAiJGVycm9yc19zZWVuIgo=