10.07.2015 Views

Manual - Grupo de Geomorfología, Hidrogeología y Medio Ambiente

Manual - Grupo de Geomorfología, Hidrogeología y Medio Ambiente

Manual - Grupo de Geomorfología, Hidrogeología y Medio Ambiente

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

Escritura <strong>de</strong> scripts <strong>de</strong> shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html2 <strong>de</strong> 6 07/09/2005 8:02miscript y estará compuesto <strong>de</strong>l siguiente códigols $1 | grep $2 | while read ARCHIVOdogrep $3 ${1}/${ARCHIVO}doneLa sintaxis serámiscript [directorio] [nombre_archivo] [palabra]Aquí tenemos varias cosas para ver. Primero que nada, el uso <strong>de</strong> las variables posicionales. Como sepodrá apreciar el número <strong>de</strong> la variable, que esta precedido por un signo $, indica la posición <strong>de</strong>largumento cuando el script es llamado. Solamente se podrán usar 9 variables <strong>de</strong> este tipo sin tener queemplear un pequeño truco <strong>de</strong> corrimiento que veremos luego, dado que el 0 representa al nombre <strong>de</strong>lscript mismo. Es <strong>de</strong>cir que en este caso la variable posicional $0 valdrá "miscript". Como se pue<strong>de</strong> ver sehan utilizado canalizaciones para poner más <strong>de</strong> un comando junto. Al final <strong>de</strong> la construcción se estausando una construcción while. Esta se usa para repetir un ciclo mientras una expresión sea cierta.while ($VARIABLE=valor)docommandosdoneEn este caso esta siendo usada al final <strong>de</strong> una canalización con la instrucción read ARCHIVO. Es <strong>de</strong>cir,mientras pueda leer el contenido <strong>de</strong> la variable $ARCHIVO, continuar. Esta variable $ARCHIVO contiene elresultado <strong>de</strong> lo que arrojo la canalización <strong>de</strong>l listado con la salvedad <strong>de</strong> que tenia que contener la palabraque le enviamos como argumento, es así que solo se imprimirán las líneas en las que coincida la palabra abuscar <strong>de</strong> los archivos que cumplan con los requisitos.Otra cosa a tener en cuenta es una nueva construcción en este script, ${1}/${ARCHIVO}. Al encerrar unnombre <strong>de</strong> variable <strong>de</strong>ntro <strong>de</strong> llaves po<strong>de</strong>mos combinarlas. En este caso forman el nombre <strong>de</strong>l directorio(${1}) y añadimos una / como separador <strong>de</strong>l directorio, y seguido e nombre <strong>de</strong>l archivo don<strong>de</strong> se aplicarael comando grep con la palabra a buscar $3.Podríamos hacer que este script sea un poco más documentado. Para esto podríamos asignar las variablesposicionales a otras variables para que se pueda enten<strong>de</strong>r mejor su uso.DIRECTORIO=$1ARCHIVO_BUS=$2PALABRA=$3ls $DIRECTORIO | grep $ARCHIVO_BUS | while read ARCHIVOdogrep $PALABRA ${DIRECTRIO}/${ARCHIVO}doneEl número <strong>de</strong> las variables posicionales que pue<strong>de</strong>n usarse en un script, como antes dijimos, se encuentrarestringido a 10. ¿Qué pasaría si tenemos más <strong>de</strong> 9 argumentos? Es aquí don<strong>de</strong> tenemos que usar lainstrucción shift. Esta instrucción mueve los argumentos hacia abajo en la lista <strong>de</strong> parámetrosposicionales. De esta manera podríamos tener una construcción con esta distribución <strong>de</strong> variables

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

Saved successfully!

Ooh no, something went wrong!