Split git diff –name-status por salto de línea

Estoy tratando de exportar una list de files modificados de dos confirmaciones con git, con este command:

read -ra ADDR <<< `git diff --name-only HEAD..HEAD~1 | sed -e "s/ /\\\ /g"` for i in "${ADDR[@]}"; do echo "$i" done 

Esto funciona bien Obtengo una buena list impresa en la terminal con cada file en una nueva fila.

 file1.txt file2.txt file3.txt 

Sin embargo, quiero usar --name-status lugar de --name-only . La razón es para que luego pueda hacer cosas diferentes dependiendo de qué tipo de cambio se haya realizado (por ejemplo, M o D).

Esto no funciona, sin embargo. Obtengo una list en el siguiente formatting:

 M file1.txt M file2.txt M file3.txt 

He intentado cambiar la variable IFS a $'\n' (devuelve todo en una fila), $'\t' (devuelve la primera fila, p. Ej. M file1.txt ) y ' ' (igual que \t ) sin éxito.

 while read STATUS ADDR do echo "$ADDR ($STATUS)" done < <(git diff --name-status HEAD..HEAD~1) 

Por ejemplo, para la salida de git como

 M INSTALL M debian/changelog M src/lib/libnvpair/SConscript M src/lib/libzfscommon/SConscript M src/lib/libzpool/SConscript M src/zfs-fuse/main.c 

lo siguiente está impreso por el ciclo while:

 INSTALL (M) debian/changelog (M) src/lib/libnvpair/SConscript (M) src/lib/libzfscommon/SConscript (M) src/lib/libzpool/SConscript (M) src/zfs-fuse/main.c (M)