Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/04/2012, 20:45
capixi
 
Fecha de Ingreso: abril-2011
Ubicación: Alicante
Mensajes: 52
Antigüedad: 13 años, 2 meses
Puntos: 3
Escapar asterisco en la shell

Hola a todos, tengo este trozo de condigo el cual me cuenta la longiud de una cadena y la recorro para poder comparar cada caracter y poder saber cuantos asteriscos tiene la cadena introducida por parametro.

Este es el codigo:

Código:
case $1 in
-name)
	#busco un nombre completo y no acepto expresiones regulares

	longitudC=${#2}  #almaceno longitud de la cadena
	caracter="*"
	i=0
	numAst=0
	echo $caracter
	echo $longitudC
	for i in {0..$longitudC} #recorro la cadena
	do 
		echo $i
		if [ $i==$caracter ] #si contenido 
		then
			echo "he entrado" $i "veces"
			let numAst=numAst+1 #sumo numero asteriscos
		fi
	done
	echo $numAst
;;
esac
Y este es el resultado de su ejecucion:

User-Capixi:~$ ./prueba.sh -name Docu**me*
Baixades buscar02.sh buscarFind.sh Desktop Documents Downloads hola.sh Imatges Música prueba.sh UserFiles Vídeos
9
{0..9}
he entrado {0..9} veces
1

Como veis el caso es que no me compara nada porque me sustituye el * por el listado de el directorio actual.

Como puedo hacer para escapar el asterisco?
Estoy comparando las cadenas de manera correcta?