Foros del Web » Administración de Sistemas » Unix / Linux »

ambito de las variables. (shell script)

Estas en el tema de ambito de las variables. (shell script) en el foro de Unix / Linux en Foros del Web. Hola, saludos a todos los de la lista. tengo un script que cuenta la cantidad de palabras de un archivo pasado por parametro. Es decir, ...
  #1 (permalink)  
Antiguo 20/12/2003, 16:17
 
Fecha de Ingreso: octubre-2003
Mensajes: 6
Antigüedad: 20 años, 6 meses
Puntos: 0
ambito de las variables. (shell script)

Hola, saludos a todos los de la lista.

tengo un script que cuenta la cantidad de palabras de un archivo pasado por parametro. Es decir, simula a wc -w. Aclaro que es un ejercicio.

el tema es que tengo una variable dentro de un for y cuando la quiero imprimir fuera del mismo es como si la variable dentro del for no existiera.

Aca les paso el codigo:

#simula wc -w
archivo=$1
cat $archivo | while read linea
do
for palabra in linea
do
i=[ i + 1 ]
done
done
echo $i
#fin del script

el problema esta en que cuando hago echo $i, esat vacio, o sea, que no toma el valor del $i dentro del for.

Si alguien me puede ayudar se lo agradezco


Última edición por madmax23; 20/12/2003 a las 16:21
  #2 (permalink)  
Antiguo 20/12/2003, 19:30
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 22 años, 4 meses
Puntos: 0
Veamos, prueba algo como:

archivo="/ruta/mi/fichero";
var=`cat $archivo`;
i=0;

for palabra in $var; do
i=$[$i+1];
done

echo $i


Espero que ayude en algo.
__________________
lical-> Usuario registrado de Linux #254225

ZonaSiete.ORG - GNU/Linux eminentemente práctico
  #3 (permalink)  
Antiguo 20/12/2003, 20:27
 
Fecha de Ingreso: octubre-2003
Mensajes: 6
Antigüedad: 20 años, 6 meses
Puntos: 0
Lical:

Gracias, lo probe y funciono. Con esto soluciono el ejercicio.

¿tienes idea de por que no funciona de la forma en que yo lo hice?

Saludos

Madmax23
  #4 (permalink)  
Antiguo 23/12/2003, 20:26
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 22 años, 4 meses
Puntos: 0
Veamos... ahora no dispongo de una máquina Linux para probarlo pero te comento lo que me parece que puede ser.

En principio i=[ i + 1 ] debería ser i=$[$i+1] porque necesitas el $[] para que se evalue una expresión aritmética y además para recuperar el valor de i necesitas anteponer la $.


cat $archivo | while read linea

Esto yo no lo había visto nunca, no sé si funciona, pero la solución que te propuse es "más fácil" de ver.


Bueno, no sé si aclaré algo ;) eso espero. Un saludo,
__________________
lical-> Usuario registrado de Linux #254225

ZonaSiete.ORG - GNU/Linux eminentemente práctico
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:43.