Tomando o caso r como exemplo, com
COMMAND="remote show origin"
seguido por
git -C "$d" "$COMMAND"
git vê três argumentos, -C , o valor de d e remote show origin , em vez dos cinco esperados ( remote , show e origin separadamente, em vez de remote show origin ).
Com bash , basta remover as aspas para corrigir isso:
git -C "$d" $COMMAND
Com o Zsh, você precisa dividir a string usando
git -C "$d" $=COMMAND