Shell
PROGRAMACIÓN DEL SHELL
1. OBJETIVO El objetivo es introducir la programación del procesador de órdenes (shell) para poder desarrollar programas básicos. Un fichero de texto que se va a procesar por el shell se conoce normalmente por shell script. Es habitualque los shell scripts tengan la extensión .sh. 2. DESCRIPCIÓN No existe un único shell. Los más conocidos son el Bourne shell, el C-shell, el Bash (Bourne again shell) entre otros. Cada uno de ellos tiene características particulares, pero todos contienen básicamente lo mismo: variables, estructuras de control… En un shell script se pueden ejecutar varias órdenes destinadas al shell ejecutando unsolo fichero, sin necesidad de volver a reescribir todas las órdenes cada vez que se quiera realizar la misma tarea. El shell que vamos a tratar es el Bash. Ejemplo básico ⇒ Ejemplo hola mundo:
#!/bin/bash # Este script imprime Hola Mundo por pantalla echo Hola Mundo
hola si ejecutamos el fichero hola:
>hola hola: permiso denegado
esto es debido a que el editor no da permiso de ejecución.Sin embargo, para que el fichero script se pueda interpretar, hay que darle permiso de ejecución.
>chmod u+x hola >hola Hola Mundo
Con este script tan básico ya podemos ver algunas cuestiones: La primera línea del script:
#!/bin/bash
indica el shell que se invoca para realizar la interpretación de este script. Debe empezar por #! indicando a continuación el shell que se debe invocar, eneste caso es el bash que se
1
encuentra en el directorio /bin. No existe ningún espacio entre los caracteres # y !(esto es importante). La segunda línea es un comentario:
# Este script imprime Hola Mundo por pantalla
Los comentarios se ponen con el carácter # a principio de línea. La tercera línea debe será interpretada por el bash:
echo Hola Mundo
Variables En un shell script sepueden utilizar variables. Una variable puede contener un número, un carácter o una cadena de caracteres. No necesita ser declarada, por defecto todas las variables son cadenas de caracteres. ⇒ Ejemplo:
#!/bin/bash # Este script imprime Hola Mundo por pantalla CAD="Hola Mundo" echo $CAD holavar
En este ejemplo se crea una variable de nombre CAD que contiene la cadena "Hola Mundo". Son necesariaslas " " porque hay un carácter de espacio dentro de la cadena. Para hacer referencia a una variable se pone $ delante del nombre de la variable. Una vez dado el permiso de ejecución, el resultado de este script es el mismo que el del anterior. Normalmente existen variables ya definidas por el shell. Con el siguiente ejemplo se imprimen en pantalla algunas de ellas. ⇒ Ejemplo de impresión devariables predefinidas:
#!/bin/bash echo Directorio HOME echo $HOME echo Directorios incluidos en el PATH echo $PATH echo shell por defecto echo $SHELL echo Numero de argumentos pasados al shell echo $# echo Estado de la ultima orden ejecutada echo $? echo Nombre del fichero ejecutado echo $0 echo Primer argumento de la linea de ordenes echo $1 echo Segungo argumento de la linea de ordenes echo $2 echoTodos los argumentos de la linea de ordenes echo $* echo Identificador de proceso actual echo $$ ls & echo Identificador del ultimo proceso en background
2
echo $! varpredef
si se ejecuta este script, el resultado es el siguiente:
>varpredef hola pepe Directorio HOME /home/alumnos/pepe Directorios incluidos en el PATH/usr/ucb:/bin:/usr/sbin:/usr/bin:/usr/etc:/usr/ccs/bin:/usr/local/gnu/bin:/us r/local/bin:/usr/games:/usr/local/games:/usr/X11R6/bin:/usr/openwin/bin:/usr/ openwin/bin/xview:/home/alumnos/pepe/bin:.:/usr/local/TeX/bin Shell por defecto /bin/tcsh Numero de argumentos pasados al shell 2 Estado de la ultima orden ejecutada 0 Nombre del fichero ejecutado varpredef Primer argumento de la linea de ordenes hola Segungo argumento de la linea de ordenes pepe Todos los...
Regístrate para leer el documento completo.