git show no funciona en script BASH

Intento escribir una pequeña secuencia de commands que simplificará la revisión de los cambios de versión entre los files de látex. En el script, estoy usando git show para extraer la versión especificada del file, pero estoy teniendo problemas.

Aquí está mi script hasta ahora:

 #!/bin/bash # A cl interface to compare changes between git versions of a latex doc # Select tex file to examine tex1=$(ls *.tex| slmenu -p "Select a tex file: ") ## Select branch branches=$(git branch | cut -c3-)"\nHEAD" branch=$(echo $branches | slmenu -p "Select the branch to compare to:") # Select how many steps ago echo "How far back? (see git reflog)" read steps treeish=$(echo $branch'~'$steps":'"$tex1"'") echo "Will compare to this branch position:" echo $treeish git show $treeish > temp.tex 

El file en el que estoy probando tiene caracteres en blanco. Al ejecutar el código aquí está la salida completa junto con el error:

  Select a tex file: SMART Reporting Tutorials.tex SMART Reporting Tutorials.tex Select the branch to compare to: HEAD HEAD How far back? (see git reflog) 1 Will compare to this branch position: HEAD~1:'SMART Reporting Tutorials.tex' fatal: Path ''SMART' does not exist in 'HEAD~1' 

El error ocurre en la línea 21 cuando se intenta ejecutar git show $treeish > temp.tex

Sin embargo, si copio los resultados del eco, HEAD~1:'SMART Reporting Tutorials.tex' , y manualmente escríbalo en la terminal con git show:

 git show HEAD:'SMART Reporting Tutorials.tex' 

Veo que funciona bien. Así que supongo que mi pregunta es … ¿Por qué falla esto en mi script de BASH, pero funciona bien cuando lo ingreso a la terminal?

Es posible que deba citar $ treeish para evitar la interpretación de caracteres espaciales. Su última línea sería:

 git show "$treeish" > temp.tex