Está en la página 1de 32

P R O G R A M A C I N

S H E L L
M. en C. Jos Antonio Coria Fernndez
Oscar Gabriel Caballero Martnez
email: camo681201
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
2
Introduccin
Construccin de script bsico. La clave de un Shell
script, es la habilidad de ingresar mltiples comandos y
procesar el resultado de cada uno de ellos
Ejecutar dos comandos conjuntamente. Se puede
ingresar en la misma lnea del prompt separando
mediante punto y coma (lo mximo son 255 caracteres)
prompt$ date;who
Lo anterior es vlido en scripts pequeos, con la
desventaja de que hay que reescribir el comando
completo cada vez que se requiera ejecutarlo
En lugar de escribir, se pueden combinar los comandos
en un archivo de texto. Y solo requiere que se ejecute el
archivo.



Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
3
Creacin Script
Cuando se crea un archivo se especfica el Shell que se
esta utilizando. Esto se ubica en la primera lnea del
archivo.
#!/bin/bash
# = usualmente es una indica un comentario, pero en la primera lnea es un
caso especial
#! = indica qu Shell se va a ejecutar
Despus de esta lnea, los comandos se ingresan en
cada lnea del archivo seguido del RETURN
#!/bin/bash
# Este script despliega la fecha y quien se encuentra conectado
date
who



Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
4
Creacin Script
El Shell script procesa los comandos en el orden en el
que aparecen en el archivo.
Para ejecutar el script (recordando) se ponen permisos
de ejecucin al archivo por ejemplo chmod 700 y se
ejecuta con un punto seguido de una diagonal
./ejemplo.sh
Si se desean agregar mensajes personalizados
utilzamos lo siguiente
echo Esto es una prueba
echo Esto es una prueba si tu estas poniendo
echo Ricky dice script es fcil.




Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
5
Ejemplo Script
#!/bin/bash
# Despliega hora y quien esta conectado
echo La fecha es:
date
echo Veamos quin est conectado
who
Si se quiere que la lnea del echo est al mismo nivel
que la salida del comando se agrega una n
echo n La fecha es:
date
Salida : La fecha es: Mon Sep 24 20:11:35





Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
6
Usando Variables
Si se requiere procesar informacin incorporando otros
datos en el Shell, se hace uso de variables.
Una variable permite almacenar informacin de manera
temporal
Variables de Ambiente: Se pueden acceder a estos
valores a partir de un Shell script. El Shell mantiene
variables de ambiente que dan seguimiento a la
informacin de un sistema en especfico.
set
env





Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
7
Usando Variables
Ejemplo 2
#!/bin/bash
# despliega informacin del sistema
echo Usuario: $USER
echo UID: $UID
echo Directorio Hogar: $HOME

Para imprimir un carcter especial se antecede de \
echo El costo es \$ 15









Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
8
Usando Variables
Variables del Usuario. Los valores se asignan a las
variables de usuario utilizando un signo igual. No
pueden tenerse espacios entre variable, signo de
igualdad y el valor.
var1=10
var2=prueba
Se determina el tipo de dato de forma automtica
#!/bin/bash
das=10
invitada=katie
echo $invitada valida en $dias das









Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
9
Usando Variables
Asignacin a otra variable, ejemplo
valor1=10
valor2=$valor1

Ejemplo 3:
#!/bin/bash
#uso de caracter
prueba=`date`
echo La fecha y hora es: $prueba









Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
10
Usando Variables
Redireccionamiento de salida
date > fecha.txt
who >> fecha.txt
Redireccionamiento de entrada
wc < fecha.txt
2 11 60
[nm. de lneas] [nm. palabras] [nm. de bytes]
#!/bin/bash
tiempo=`date +%Y%m%d`
ls al /usr/bin > log.$tiempo






Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
11
Redireccionamiento
wc << EOF
test string1
test string2
test string3
EOF
Entubamiento (pipes)
rpm qa | sort
rpm qa | sort | more








Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
12
Operaciones matemticas
No es muy bueno con Shell script, para hacer esta tarea
se emplea el comando expr

$ expr 1 + 5
6
$ expr 5 * 2 / Error

$ expr 5 \* 2 / 10

Bash ocupa expr para ser compatible con Bourne








Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
13
Operaciones matemticas
#!/bin/bash
# ejemplo utilizando el comando expr
var1=10
var2=20
var3=`expr $var2 / $var1`
echo El resultado es $var3
Uso de Corchetes
var1=$[1 + 5]
echo $var1
var2=$[ $var1 * 2]
echo $var2





Operaciones Matemticas
#!/bin/bash
var1=100
var2=50
var3=45
var4=$[$var1*($var2-var3)]
echo El resultado final es $var4
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
14
Operaciones Matemticas
#!/bin/bash
var1=100
var2=45
var3=$[$var1/$var2]
echo El resultados es $var3
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
15
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
16
Operaciones matemticas
Valores de punto flotante
(calculadora de bash (bc))

#!/bin/bash
var1=`echo scale=4; 3.44/5 | bc`
echo La respuesta es $var1











#!/bin/bash
var1=43.67
var2=33.2
var3=71
var4=10.46
var5=`bc <<EOF
scale=4
a1=($var1*$var2)
b1=($var3*$var4)
a1 + b1
EOF
`La respuesta final es $var5




Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
17
Saliendo del Script
Verificando el estatus de salida (exit )
$? = variable especial que contiene el valor del estatus
de salida del ltimo comando ejecutado.
date date %t
echo $? echo $?
0 1
Puede dar como salida: si es exitoso un 0 , si tiene un error un valor
entero positivo
1= error desconocido general
2= comando de shell perdido
126= comando no se puede ejecutar
127= comando no encontrado
.
.




Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
18
Saliendo del Script
Es posible cambiar el cdigo de salida empleando el
comando exit.
#!/bin/bash
# probando el estatus con exit
var1=10
var2=14
var3=$[$var1+var2*3]
echo El resultado es $var3
exit 5
Saliendo del Script
#!/bin/bash
var1=34
var2=15
var3=$[$var1 * var2]
exit $var3
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
19
Saliendo del Script
#!/bin/bash
var1=34
var2=15
var3=$[$var1 * var2]
echo El resultado es $var3
exit var3

Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
20
Sentencia if-then
La sintaxis en el bash para la sentencia if-
then se comporta de la siguiente forma
if comando
then
comandos
fi
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
21
Sentencia if-then
#!/bin/bash
if date
then
echo Funciona a la perfeccin
fi
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
22
Sentencia if-then
#!/bin/bash
usuarioPreg=oscar
if grep $usuarioPreg /etc/passwd
then
echo Los archivos bash del usuario $usuarioPreg son:
ls a /home/$usuarioPreg/.b*
fi
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
23
Sentencia if-then-else
if comando
then
comandos
else
comandos
fi
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
24
Sentencia if-then-else
#!/bin/bash
usuarioPreg=oscar
if grep $usuarioPreg /etc/passwd
then
echo Los archivos bash del usuario $usuarioPreg son:
ls a /home/$usuarioPreg/.b*
esle
echo El usuario $usuarioPreg no existe
fi

Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
25
ifs anidados
if comando1
then
comandos1
elif comado2
then
comandos2

elif comandoN
then
comandosN
fi
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
26
Condiciones
Para la sentencia if, se tiene la posibilidad
de comparar:
1. Numricamente
2. Cadenas
3. Archivos
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
27
Comparacin Numrica
#!/bin/bash
#Comparacin numrica
val1=10
if [$val1 gt 5]
then
echo El valor $val1 es mayor que 5
fi
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
28
Comparacin Numrica
Operador Significado
-gt Mayor que
-ge Mayor o igual
-lt Menor que
-le Menor o igual
-eq Igual a
-ne diferente
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
29
Comparar Cadenas
#!/bin/bash
#Compara con error cadenas
val1=carro
val2=coche
if [$val1 > $val2]
then
echo $val1 es mayor a val2
else
echo $val1 es menor a val2
fi
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
30
Comparar Cadenas
Comparacin Descripcin
Str1 > Str2 Mayor
Str1 < Str2 Menor
Str1 = Str2 Igual
Str1 != Str2 Diferente
-n Str1 Checa si la longitud es mayor a cero
-z Str1 Checa si la longitud es cero
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
31
Jos A. Coria Fernndez Oscar
Gabriel Caballero Martnez
32


GRACIAS POR SU ATENCIN