Seu script não preserva as cotações. A linha original executada por conclusão é:
git --git-dir=.git for-each-ref '--format=%(refname:short)' refs/tags refs/heads refs/remotes
pelo seu script você recebe:
bash -c '/usr/bin/git --git-dir=.git for-each-ref --format=%(refname:short) refs/tags refs/heads refs/remotes'
Anote as citações que faltam:
--format=%(refname:short)
Não olhei para o que você realmente faz, mas isso:
quoted_args="$quoted_args \"$i\""
# | |
# +--+------- Extra quotes.
deve resultar em algo como:
bash -c '/usr/bin/git --git-dir=.git "for-each-ref" "--format=%(refname:short)" "refs/tags" "refs/heads" "refs/remotes"'
ou:
quoted_args="$quoted_args '$i'"
# | |
# +--+------- Extra quotes.
bash -c '/usr/bin/git --git-dir=.git '\''for-each-ref'\'' '\''--format=%(refname:short)'\'' '\''refs/tags'\'' '\''refs/heads'\'' '\''refs/remotes'\'''
Você pode querer olhar para o formato %q
para printf
.