2009/9/23 Abelardo Ramírez Ferrer <abelardo@platino.co.cu>
Hola colegas

Estoy enredado con un error con el uso de `expr index ...`. El ejemplo
con el que estoy probando y que les pongo al final es simple pero tiene
que ver con algo parecido al tema pasado "Timer para control sesionES"

El problema es que que si en la cadena $micadena al valor le añado
espacios entre palabras me tira el error "expr: error de sintaxis", si
se los quito en $miotracadena todo trabaja bien. Es decir en los echos
1, 3 y 5 me da error; en los echos 2,4 y 6 no.


Gracias



#!/bin/bash
#
clear
micadena="Pepe y Juan"
miotracadena="PepeyJuan"
cadenaabuscar="Juan"
#echo 1
echo "Posicion con espacios " `expr index $micadena $cadenaabuscar`
#echo 2
echo "Posicion sin espacios " `expr index $miotracadena $cadenaabuscar`
#echo 3
echo "La primeras tres letras con espacios " `expr substr $micadena 1 3`
#echo 4
echo "La primeras tres letras sin espacios " `expr substr $miotracadena
1 3`
#echo 5
echo "Largo de micadena con espacios" `expr length $micadena`
#echo 6
echo "Largo de micadena sin espacios" `expr length $miotracadena`


El script almacena las cadenas completas gracias a las comillas, pero cuando esas cadenas las reciben las expresiones, esas comillas ya no están. Eso hace que aparezcan en la expresión más argumentos que los necesarios para index, substr y length. Si pones en cambio `expr index "$micadena" "$cadenaabuscar"` todo se arreglará.

--
Eduardo Grosclaude
Universidad Nacional del Comahue
Neuquen, Argentina