Crear twigs de rastreo remotas usando bash one-liner no se comporta igual que ejecutar los commands manualmente

Si ejecuto el siguiente command:

for r in $(git branch -r | grep -Po "(?<=myremote/).*"); do echo git branch --track $r myremote/$r; done 

Obtengo el siguiente resultado:

 git branch --track foo myremote/foo git branch --track bar myremote/bar git branch --track baz myremote/baz 

Si ejecuto estos commands repetidos individualmente, obtengo el siguiente resultado:

 Branch foo set up to track remote branch foo from myremote. Branch bar set up to track remote branch bar from myremote. Branch baz set up to track remote branch baz from myremote. 

Por otro lado, si ejecuto el siguiente one-liner (simplemente eliminando "echo"):

 for r in $(git branch -r | grep -Po "(?<=myremote/).*"); do git branch --track $r myremote/$r; done 

La creación de la twig falla con el siguiente resultado:

 fatal: 'foo' is not a valid branch name. fatal: 'bar' is not a valid branch name. fatal: 'baz' is not a valid branch name. 

¿Por qué podría estar pasando esto? ¿Hay algo diferente sobre el command que se está ejecutando? ¿Cómo puedo depurar esto desde entonces?

ACTUALIZAR:

Parece que hay algunos caracteres de control invisibles que fluyen a través de la tubería Unix, incluso cuando especifico --color=never for grep . Si cambio la expresión regular a (?<=myremote/)[\w]* el problema está resuelto. Sin embargo, todavía no entiendo de dónde viene el carácter de control erróneo. Si agrego echo $r | od -c echo $r | od -c a la salida para ver los datos brutos que llegan a través de la tubería, está claro que hay caracteres de control adicionales allí:

Salida con regex original:

 0000000 foo 033 [ m \n 0000007 

Salida con nueva expresión regular:

 0000000 foo \n 0000004 

¿Cuál es el carácter adicional y de dónde vino desde que agregué la opción --color=never ?

Esto funcionó bien para mí

 git branch -r | awk '/myremote/{print $2}' FS=/ | while read q do git branch --track $q myremote/$q done