Trabajar con archivos que contienen espacios puede ser un dolor de cabeza con bash.
Aquí dejo un ejemplo de como hacerlo.
En este ejemplo vamos a buscar los archivos que subversion nos indica que han sido modificados:
# Se definie el fin de linea como el separador entre parámetros DIFS= "$IFS" ; IFS=$ '\n' echo for x in $(svn status | grep ^M | awk - v FS= 'M ' '{printf "\n%s",$2}' ) ; do echo - "$x" parametros= "$parametros '$x'" done IFS= "$DIFS" echo read -n 1 -s -p 'Añadir (s/n): ' OPCION if [ "$OPCION" = 's' ] ; then cmd= "$cmd $parametros" ; eval $cmd fi |
Añadimos en un array los archivos recibidos:
declare -a e_archivos_seleccionados=() c=0 while [ -n "$1" ]; do echo - "$c) $1" e_archivos_seleccionados[$c]= "$1" shift 1 let c=c+1 done |
Añadimos lista de archivos a base de datos:
for c in ` seq 0 ${ #e_archivos_seleccionados[*]}` ; do x= "${e_archivos_seleccionados[$c]}" echo "- $x" # Comprobar que no este ya en la base de datos SQL= "SELECT nombre from rMovimientoArchivos WHERE nombre='$x' AND idMovimiento=$movimientoId" SALIDA=`ejecutarSQL "$SQL" "-N" ` if [ "$SALIDA" != "$x" ] ; then SQL= "INSERT INTO rMovimientoArchivos VALUES ($movimientoId,'$x')" ejecutarSQL "$SQL" if [ "$?" != "0" ] ; then mensajes "Archivo: $x no fue añadido a movimiento: $movimientoId" else mensajes "Archivo: $x añadido a movimiento: $movimientoId" fi fi done |
Pasar un array de archivos a un comando colocando comillas para que no de problemas.:
parametros= "$(for n in `seq 0 $((${#aSALIDA[*]}-1))` ; do echo -n " '${aSALIDA[$n]}' " ; done)" cmd= "$mt_editor_dev $parametros" eval "$cmd" |