Vous êtes sur la page 1sur 7

SISTEMAS OPERATIVOS

ALVARO ENRIQUE CHAVEZ ZUBIETA


10 de Noviembre del 2012
Gua N
PROGRAMACION EN SHELL BASH
______________________________________________________________________

Un programa Shell (llamado a veces como guin Shell o Shell script) es un archivo de texto que contiene
el Shell y comandos de Linux.
Cuando un programa Shell es ejecutado, el Shell lee el contenido del archivo lnea por lnea y la ejecuta
como si se estuviera escribiendo cada comando en la lnea de comandos. No hay nada que no se pueda
poner en un programa Shell que no se pueda escribir en la lnea de comandos.
Los programas Shell contienen ms cosas de lo que esperara en un simple lenguaje de programacin. Los
programas pueden contener servicios como:
Variables.
Estructuras lgicas (If then, And, Or, etc).
Bucles (while, for).
Funciones.
Comentarios.

La forma en que estos servicios son implementados depende del Shell en que se est programando.
Aunque las variaciones a menudo no son grandes no significa que un programa escrito para el Shell
Bourne funcionara en el Shell c.
Los programas shell son un poco diferentes de lo que se acostumbra a programar. Estos son archivos de
texto plano que no necesitan ser compilados (como programas escritos en c/c++, pascal, etc, que
requieren compilacin y vinculacin para producir un archivo ejecutable). El Shell interpreta los
programas Shell, si hay un error (sintaxis o ejecucin) se despliega su respectivo mensaje como si se
hubiera escrito en la lnea de comandos.
En el nivel ms bsico, un programa interpretado es tpicamente rpido de escribir/modificar y ejecutar.
Los programas compilados tpicamente requieren escritura, compilacin, vinculacin y ejecucin, por lo
que consumen ms tiempo de desarrollo y prueba.
Sin embargo, un programa compilado/vinculado es un archivo binario conteniendo una coleccin directa
de llamadas de sistema. El programa interpretado, por otra parte, debe ser primero procesado por el Shell
que convierte los comandos a llamadas de sistema o llamadas a otros binarios, lo que hace a los
programas Shell lentos.

1. [root @linux~]# vi ejemplo1 (Enter)




esc
:wq
[root @linux~]#chmod 111 ejemplo1
[root @linux~]#bash ejemplo1 (enter)
Que observa?
___________________________________________________________________________

#!/bin/bash
date
sleep 5
date



2. [root @linux~]#vi ejemplo2




esc
:wq
[root @linux~]#chmod 111 ejemplo2 (enter)
[root @linux~]#bash ejemplo1 (enter)
Que observa?
___________________________________________________________________________
3. [root @linux~]#vi mensaje


esc
:wq
[root @linux~]#chmod 111 mensaje (enter)
[root @linux~]#bash mensaje (enter)

4. Usando variables
El uso de variables en un programa Shell es bien sencillo, simplemente se escribe:

Nombrevariable = Valor

Los resultados de los comandos pueden ser almacenados en las variables o pueden contener lneas
ejecutables.
[root @linux~]#vi prueba





esc
:wq
[root @linux~]#chmod 111 prueba (enter)
[root @linux~]#bash prueba (enter)
Que observa?
__________________________________________________________________________

5. Variables predefinidas
Muchas variables predefinidas son establecidas durante el proceso de inicio de sesin, como por
ejemplo $USER, nombres que no siempre son estndar de un sistema a otro. Sin embargo muchas
variables Shell predefinidas son familiares en todos los sistemas.
$0 = nombre del programa
$1 hasta $9 = parmetros desde el 1 hasta el 9
$# = nmeros de parmetros

[root @linux~]#vi parmetros


#!/bin/bash
#Programa que despliega en la pantalla un mensaje
echo esta es una prueba de un scripts Shell para sistemas operativos

#!/bin/bash
who
date
history

#!/bin/bash
var=ls -l
echo $var
var=`ls -l`
echo $var










esc
:wq
#chmod 111 parametros (enter)
#bash parametros (enter)
Que observa al usar la variable $*?
___________________________________________________________________________

6. [root @linux~]#vi suma


esc
:wq
[root @linux~]#chmod 111 suma (enter)
[root @linux~]#bash suma (enter)
[root @linux~]#bash suma 40 15 60
Que observa?
___________________________________________________________________________

7. Salidas y entradas bsicas
Comando echo:___________________________________________________________

Comando read:___________________________________________________________

[root @linux~]#vi lectura






esc
:wq
[root @linux~]#chmod 111 lectura (enter)
[root @linux~]#bash lectura (enter)

8. [root @linux~]#vi parametros





esc
:wq

#!/bin/bash
echo $0
echo $#
echo $1
echo $2
echo $3
echo $*

#!/bin/bash
var=`expre $1+$2+$3`
echo La respuesta es $var

#!/bin/bash
echo introduce 3 variables
read var1 var 2 var3
echo las variables introducidas son:
echo var1=$var1
echo var2=$var2
echo var3=$var3

#!/bin/bash
# Uso de variables predefinidas. Nombre de Archivo: parmetros
var=`expr $1 + $2 + $3`
var1= let $1 + $2 + $3
echo la respuesta es $var.



[root @linux~]#chmod 111 parametros (enter)
[root @linux~]#bash parmetros 20 10 50 (enter)

9. [root @linux~]#vi comando_test







esc
:wq
[root @linux~]#chmod 111 comando_test (enter)
[root @linux~]#bash comando_test (enter)

- Expresiones para caracteres alfabeticos o cadenas:

- Expresiones para nmeros: - Expresiones lgicas









- Expresiones para ficheros












#!/bin/bash
test f lectura
echo $?
test -f lecturas
echo $?
-f suma
echo $?







Uso de if
Se utiliza para probar el estado de un comando. Si se quiere comparar una expresin se debe usar el
comando test [ expresin ] o [ expresin ]
Sintaxis:
if [ expresin ]
then
// lo que hay que hacer
Fi

10. [root @linux~]#vi comando_test







esc
:wq
[root @linux~]#chmod 111 comando_test (enter)
[root @linux~]#bash comando_test (enter)

11. [root @linux~]#vi archivito







esc
:wq
[root @linux~]#chmod 111 archivito (enter)
[root @linux~]#bash archivito (enter)

12. [root @linux~]#vi expression








esc
:wq
[root @linux~]#chmod 111 expresion (enter)
[root @linux~]#bash expresion (enter)


#!/bin/bash
if test f /etc/hosts
then
-f /etc/hosts
else
echo el fichero no existe
fi
#!/bin/bash
#Uso del if para verificar el estado de un comando
if ls /usr/include/pwd.h > /dev/null
then
echo "El archivo pwd.h existe"
else
echo "El archivo pwd.h ha sido borrado!"
fi
#!/bin/bash
#Uso del if evaluando una expresin
if [ "$1" = "3" ]
then
echo "SI, es el nmero 3"
else
echo "NO, es la nmero 3"
fi


Uso de case
Case se usa para comparar valores contra una lista de patrones. Su sintaxis es:
case valor in
Patrn 1) comando
Mas comandos ;;
Patrn 2) comando
Mas comandos ;;
Patrn n) .
esac

13. [root @linux~]#vi sh_case








esc
:wq
[root @linux~]#chmod 111 sh_case (enter)
[root @linux~]#bash sh_case (enter)

Uso de while y until
Tambin es posible ejecutar bloques de rdenes de forma iterativa dependiendo de una condicin.
La comprobacin puede realizarse al principio (while) o al final (until). La sintaxis es la siguiente:

while [ expresin ] # Mientras la expresin sea cierta...
do
...
done

until [ expresin ] # Mientras la expresin sea falsa...
do
...
done

14. [root @linux~]#vi sh_while







esc
:wq
[root @linux~]#chmod 111 sh_while (enter)
[root @linux~]#bash sh_while (enter)
#!/bin/bash
echo -n Desea continuar?
read respuesta
case $respuesta in
S* | s*) respuesta=El programa debe continuar.. ;;
N* | n*) respuesta=Programa finalizado ;;
*) respuesta= Respuesta incorrecta ;;
esac
echo $respuesta
#!/bin/bash
a=12
while $a le 53
do
echo contador=$a
a =`expr $a+1`
done



TRABAJOS A DESARROLLAR

I. Hacer un programa que determine el signo zodiacal correspondiente de una persona en base al mes y
el da de nacimiento.
Por ejemplo:
[usuario@linux ~]$bash zodiaco agosto 14
Su signo es LEO

II. Cree un shell script llamado doble que pida un nmero por teclado y calcule su doble. Debe
comprobar el nmero introducido y antes de terminar preguntar si deseamos calcular otro doble, en
cuyo caso no terminar.
Ejemplo:
Introduzca un nmero para calcular el doble: 89
El doble de 89 es 178
Desea calcular otro doble (S/N)?

III. Cree un shell script llamado fecha_hora que devuelva la hora y la fecha con el siguiente formato:
Son las hh horas, xx minutos del da dd de mmm de aaaa donde mmm representa las iniciales del
mes en letra (ENE, FEB, MAR, ..., NOV, DI C).
IV. Cree un shell script llamado infosis que muestre la siguiente informacin:
Un saludo de bienvenida del tipo:
Hola usuario uuu, est usted conectado en el terminal ttt donde uuu y ttt son, respectivamente, el
nombre de usuario y el terminal desde el que se ejecuta la orden.
La fecha y la hora actuales, usando para ello el ejercicio nmero III.
Una lista con los usuarios conectados.
Una lista de los procesos del usuario que se estn ejecutando en ese momento.

Vous aimerez peut-être aussi