¿Cómo escapingse del espacio en script shell sh para valores de escritura pnetworkingeterminados?

Quiero escribir algo en mi plist, para eso uso script shell. Estoy entrenando en un script de shell al mismo time. Solo trato de get las tres primeras líneas de salida del command git log, y pongo el resultado en la propiedad de info.plist

mi guion

output=$(git log | head -n 3) file=$(echo $PWD)/info # write it to the Info.plist defaults write "$file" gitLog $output 

el resultado de este command: $ (git log | head -n 3)

 commit glfdkjglkjdfgjdflkjglkdfjglkdfgkljdfk Author: Steve Jobs <[email protected]> Date: Fri Jun 28 14:33:38 2013 -0700 

El problema es cuando pongo $output para el parámetro de defaults write . Piensa que doy commit con otros parameters como "glfdkjglkjdfgjdflkjglkdfjglkdfgkljdfk" …

Entonces necesito hacer algo para hacerle entender que la salida es solo un argumento.

Es como cuando quiero mostrar la list de una carpeta con un nombre que contiene un espacio. Tengo que hacer :

 ls "MY FOLDER" 

Espero haber explicado bien mi problema

ayuda por favor

Tratar de usar:

 output=$(git log | head -n 3) file=$(echo $PWD)/info defaults write "$file" gitLog -string "$output" 

si quieres almacenar 3 líneas de text como "una cadena".

O el siguiente:

 OIFS=$IFS IFS=$'\n' declare -a output=( $(git log | head -n 3) ) IFS=$OIFS file=$(echo $PWD)/info defaults write "$file" gitLog -array "${output[0]}" "'${output[1]}'" "${output[2]}" 

si quieres almacenar 3 líneas como "matriz".