Sei sulla pagina 1di 27

Programacin Shell

Rafael Duque Medina Prcticas de Administracin de Sistemas Operativos 2010-2011

Shell

Interprete de rdenes de UNIX que ejecuta los comandos introducidos mediante teclado o almacenados en un archivo Los shell de UNIX ms comunes: Bourne /bin/sh

C /bin/csh Korn /bin/ksh

Visualizar los shell disponibles cat /etc/shells Shell actual echo $SHELL Los shell scripts constan de un conjunto de rdenes que sern ejecutadas por un shell y se almacenan en archivos UNIX
2 Administracin de Sistemas Operativos

Shell scripts

Principales ventajas

Portabilidad Ahorra tiempo Agilizar tareas Definir nuevos comandos

Principales desventajas

Poca rapidez en la ejecucin Cdigo accesible a todos los usuarios

Administracin de Sistemas Operativos

Cmo ejecutar el script?


1)
2) 3) 4)

Crear archivo mediante un editor El archivo se almacena generalmente con extensin .sh Hacer ejecutable el archivo del script
$ chmod +x archivo_script

Ejecutarlo el script con los argumentos correspondientes


$ ./archivo_script argumento_1 argumento_2

Administracin de Sistemas Operativos

Mi primer script

Indicar en la primera lnea del script el shell que se utiliza

#!/bin/bash Incluir al inicio comentarios que indiquen el nombre del script y describan su funcionalidad

Los comentarios comienzan con el carcter #

Utilizar el comando echo para mostrar informacin


#!/bin/bash # Mi primer shell script echo "Hola mundo"

Administracin de Sistemas Operativos

Variables

Variable: Posicin de la memoria principal a la cual se le asigna un nombre


Variables de entorno: Configuran ciertos parmetros del entorno en el que se ejecuta el shell Variables de usuario: Se usan dentro del script como almacenamiento temporal y pueden cambiar durante la ejecucin del script

Administracin de Sistemas Operativos

Algunas variables de entorno


Nombre de la variable HOME USER Informacin Directorio del usuario Login del usuario

PWD
SHELL PATH HOSTNAME #!/bin/bash

Directorio actual
Nombre del Shell Lista de directorios donde se encuentran los comandos que el usuario puede ejecutar Nombre del equipo

echo "Usted es el usuario $USER " echo "Su equipo es $HOSTNAME" echo "Su directorio actual es $PWD" echo "El shell actual es $SHELL"
7 Administracin de Sistemas Operativos

Variables de usuario

Sintaxis para asginar valores a las variables


variable1=valor1 [variable2=valor2 variableN=valorN] No debe existir espacio antes y despus del signo =, en caso de existir espacio es necesario encerrar el valor entre comillas

El comando echo sirve para visualizar los valores de las variables El valor de una variable se puede leer insertando $ antes del nombre de la variable

Administracin de Sistemas Operativos

Caracteres especiales

La opcin e del comando echo habilita la interpretacin de caracteres especiales


Significado Imprime la lnea sin que el cursor pase a la siguiente lnea Salto de pagina Nueva lnea Retorno de carro Tabulador horizontal Tabulador vertical

Carcter \c \f \n \r \t \v

Administracin de Sistemas Operativos

Estudiar las salidas y posibles errores de este fragmento de cdigo


#!/bin/bash # Estudiar las salidas y posibles errores de este fragmento de codigo actividad=estudiante echo actividad actividad=estudiante universitario actividad="estudiante universitario" echo actividad echo "$actividad echo "La labor de $actividad es bastante interesante echo \$actividad echo actividad

10

Administracin de Sistemas Operativos

Argumentos
Nombre
$0 $1 - $9 $* $#

Informacin
Nombre del script Valores de los argumentos 1 a 9 de la lnea de rdenes Valores de todos los argumentos de la lnea de ordenes Nmero total de argumentos de la lnea de ordenes #!/bin/bash # Visualiza argumentos echo "El nombre del script es '$0'" echo "El numero de argumentos pasados al script es '$#'" echo "Los argumentos pasados son '$*'"

11

Administracin de Sistemas Operativos

Entrada interactiva

La orden read permite almacenar la entrada del usuario en una variable del shell
#!/bin/bash # Leer de la entrada estandar echo -e "Escriba su nombre:\c read nombre echo "Su nombre es $nombre echo -e "Escriba sus dos apellidos:\c read apellido1 apellido2 echo "El primer apellido es $apellido1" echo "El segundo apellido es $apellido2"

12

Administracin de Sistemas Operativos

Expresiones matemticas

Sintaxis de las operaciones aritmticas

expr operandoa operador_aritmetico operandob $ expr 8 + 4 $ expr 5 - 3 $ expr 18 / 3 $ expr 25 % 5 $ expr 10 \* 2 $ echo `expr 5 \* 3`

Ejemplos:

13

Administracin de Sistemas Operativos

Condicional if
if expresion_lgica then
ordenes_then

else ordenes_else fi

if expresion_lgica1 then lista_ordenes1 elif expresion_lgica2 then lista_ordenes3 elif expresion_lgica3 then lista_ordenes3 else lista_ordenes4 fi
Administracin de Sistemas Operativos

14

Expresiones lgicas

Evalan expresiones y retornan el valor true o false Pueden utilizarse dos sintaxis

Emplear la palabra reservada test precediendo a la expresin

test expresin

Colocar la expresin entre corchetes, dejar espacios entre los corchetes y la expresin

[ expresin ]

Las expresiones lgicas admiten operadores para comprobar nmeros, cadenas, archivos o para formar expresiones ms complejas

15

Administracin de Sistemas Operativos

Expresiones lgicas
Operadores para formar expresiones complejas ! expr (NOT) expra a exprb (AND) expra o exprb (OR) Significado true si expr es false true si expra y exprb son true si expra o exprb o ambas son true

Operadores con archivos f file d file r file w file x file s file


16

Significado true si el archivo existe y es archivo regular true si el archivo existe y es directorio true si el archivo existe y se puede leer true si el archivo existe y se puede escribir true si el archivo existe y se puede ejecutar true si el archivo existe y no est vaco
Administracin de Sistemas Operativos

Expresiones lgicas
Operadores numericos inta eq intb inta ne intb inta lt intb inta le intb inta gt intb inta ge intb Significado true si los dos enteros son iguales true si los dos enteros no son iguales true si inta < intb true si inta <= intb true si inta > intb true si inta >= intb

Operadores con cadenas


stringa = stringb stringa != stringb -n string z string
17

Significado
true si los dos string son iguales true si los dos string no son iguales true si el string tiene por lo menos un carcter true si el string est vaco
Administracin de Sistemas Operativos

Ejemplo con expresiones lgicas


#!/bin/bash # Expresiones numericas,cadenas y logicas if test $# -ge 2 then if [ $1 = $2 ] then echo "Los argumentos 1 y 2 son iguales" else echo "Los argumentos 1 y 2 no son iguales" fi else echo "Numero de argumentos insuficientes" fi

18

Administracin de Sistemas Operativos

Bucle for
for variable [in lista-argumentos] do
Lista-ordenes

done
#!/bin/bash # For for argumento in $* do echo "$argumento" done

19

Administracin de Sistemas Operativos

Bucle while
while expresion do
lista ordenes
#!/bin/bash # while solucion=15 echo "Escriba el minimo comun multiplo de 5 y 3" read respuesta while [ "$solucion" != "$respuesta" ] do echo "Respuesta incorrecta" echo "Vuelva a intentarlo" echo "Escriba el minimo comun multiplo de 5 y 3" read respuesta done echo "Enhorabuena, ha conseguido resolver el problema

done

20

Administracin de Sistemas Operativos

Bucle until
until expresion do
Lista ordenes
#!/bin/bash # until solucion=15 echo "Escriba el minimo comun multiplo de 5 y 3" read respuesta until [ "$solucion" = "$respuesta" ] do echo "Respuesta incorrecta" echo "Vuelva a intentarlo" echo "Escriba el minimo comun multiplo de 5 y 3" read respuesta done echo "Enhorabuena, ha conseguido resolver el problema"

done

21

Administracin de Sistemas Operativos

Case
case expresion in
patron1) patron2) patron3) *) esac lista_ordenes1;; lista_ordenes2;; lista_ordenes3;;
Carcter * Significado Cero o ms caracteres cualquiera

?
[abc] abc A|B

Un carcter cualquiera
Cualquier carcter del conjunto El contenido entrecomillado Reconoce cualquiera de las dos opciones

lista_ordenes3;;

22

Administracin de Sistemas Operativos

Ejemplo case
case $1 in diciembre | enero | febrero) echo Verano;; marzo |abril | mayo) echo Otoo;; junio | julio | agosto) echo Invierno;; setiembre | octubre | noviembre) echo Primavera;; *) echo error al pasar el parametro;; esac

23

Administracin de Sistemas Operativos

Funciones

Se utilizan cuando un segmento de cdigo se repite en distintas partes del script Definicin de una funcin
Nombre_funcion (){
Lista de ordenes

Invocacin de una funcin

Nombre_funcin lista_argumentos

24

Administracin de Sistemas Operativos

Funciones

Acceso a los argumentos posicionales de la funcin


Nombre_funcion (){
X=$1 Y=$2

$1, $2

Retorno de valores numricos


Nombre_funcion (){
return $variable_numerica

variable $?

} echo $?
25 Administracin de Sistemas Operativos

Ejemplo de funcin
#!/bin/bash # Funciones
function miprimerafuncion () { x="$1 return `expr $x \* 2` } miprimerafuncion $# echo "$?"

26

Administracin de Sistemas Operativos

Depuracin de scripts

Los scripts pueden depurarse mediante la opcin x del comando sh

sh x script_erroneo

La opcin x se puede combinar con la opcin v para visualizar cada lnea del script antes de ejecutarla

sh xv script erroneo

27

Administracin de Sistemas Operativos

Potrebbero piacerti anche