25.01.2015 Views

Instrucciones en PDF - Elisa Schaeffer

Instrucciones en PDF - Elisa Schaeffer

Instrucciones en PDF - Elisa Schaeffer

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

CAPÍTULO 7. PROGRAMACIÓN 144<br />

lines=‘wc -l $file | awk ’{print $1}’‘<br />

echo "El archivo" $file "ti<strong>en</strong>e" $lines "lineas."<br />

sum=‘expr $sum + $lines‘<br />

count=‘expr $count + 1‘<br />

done<br />

echo "En total son" $sum "lineas <strong>en</strong> los" $count "archivos."<br />

prom=‘expr $sum / $count‘<br />

echo "Promedio redondeado:" $prom<br />

exit 0<br />

Copiando del <strong>PDF</strong>, hay que cuidar mucho poner los símbolos al comi<strong>en</strong>zo y final de las expresiones<br />

correctam<strong>en</strong>te. Cuando lo corremos, obt<strong>en</strong>emos lo sigui<strong>en</strong>te:<br />

> ./primero elisa<br />

hola, elisa<br />

la fecha y hora actual:<br />

Fri Jun 22 17:55:14 CDT 2007<br />

El archivo countsize ti<strong>en</strong>e 23 lineas.<br />

El archivo datos.txt ti<strong>en</strong>e 25 lineas.<br />

El archivo primero ti<strong>en</strong>e 19 lineas.<br />

El archivo primero~ ti<strong>en</strong>e 19 lineas.<br />

El archivo teclado.txt ti<strong>en</strong>e 8 lineas.<br />

El archivo total.awk ti<strong>en</strong>e 4 lineas.<br />

En total son 98 lineas <strong>en</strong> los 6 archivos.<br />

Promedio redondeado: 16<br />

><br />

Hay que tomar <strong>en</strong> cu<strong>en</strong>ta que esto no va a funcionar si los nombres de los archivos o las carpetas<br />

conti<strong>en</strong><strong>en</strong> espacio blanco. Por lo g<strong>en</strong>eral no es una bu<strong>en</strong>a idea utilizar blancos <strong>en</strong> los nombres<br />

por razones de compatibilidad. También se confunde con carpetas y <strong>en</strong>laces — como ejercicio,<br />

puedes modificar la línea que elije el nombre del archivo <strong>en</strong> una variable así que no considere<br />

carpetas o <strong>en</strong>laces.<br />

Para mostrar cómo implem<strong>en</strong>tar condiciones y bucles <strong>en</strong> shell scripts, el sigui<strong>en</strong>te ejemplo int<strong>en</strong>ta<br />

verificar con un algoritmo muy simple si o no un <strong>en</strong>tero es primo:<br />

#!/bin/sh<br />

# toma como parametro un <strong>en</strong>tero mayor a uno y determina si es primo<br />

echo "Determinando si" $1 "es primo:"<br />

cont=si<br />

n=$1<br />

i=2<br />

# mi<strong>en</strong>tras i es m<strong>en</strong>or que n<br />

while [ $i -lt $n ]<br />

do<br />

# dividimos por i<br />

div=‘expr $n / $i‘<br />

# calculamos el producto del resultado con i<br />

prod=‘expr $div ’*’ $i‘<br />

# tomamos la difer<strong>en</strong>cia<br />

mod=‘expr $n - $prod‘<br />

# si el difer<strong>en</strong>cia es cero<br />

if [ $mod -eq 0 ]<br />

th<strong>en</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!