Вы находитесь на странице: 1из 8

Laboratorio 8

Programación en shell Bash

Sebastián Chico Blanco


Víctor José Cabria
Rafael Torres Molina
Arnold de la rosa
Julián Andrés Rodríguez Julio

Fundación Universitaria Tecnológico Comfenalco


Tecnología En Desarrollo De Software
Facultad De Ingeniería
Cartagena De Indias
2019
Programación en shell Bash

En esta práctica se introducirá a la creación de programas interpretados (scripts) en shell Bash, se


mostrará la sintaxis de variables, entrada y salida de datos, operadores lógicos, estructuras
condicionales, bucles y comandos.

Objetivos:
 Aprender la sintaxis de la programación script bash.

Material y Equipo:
 Sistema Operativo Linux con comandos Bash

Conceptualización.
Shell
Interfaz principal entre el usuario final y el Sistema Operativo, existen muchas versiones, para
averiguar cual se tiene instalada, escriba en la consola:

echo $SHELL

En UNIX existen 2 familias principales de Shells: los basados en el interprete Bourne (Bourne shell
(bsh), Korn shell (ksh) o Bourne Again shell (bash)) y los basados en el interprete C (C shell (csh), TC
shell (tcsh).

El interprete de comando mas utilizado en Linux es “bash” shell.


Bash incorpora las prestaciones más útiles de la Korn shell (ksh) y la C shell (csh), un completo
lenguaje para programación estructurada y gran variedad de funciones internas.

Programación Shell
Un programa shell (Tambíen conocido como guiones, guión shell o “shellscript”) 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 línea por línea y la ejecuta
como si se estuviera escribiendo cada comando en la línea de comandos.

Los programas shell contienen:


• Variables.
• Estructuras lógicas (If then, And, Or, etc).
• Bucles (while, for).
• Funciones.
• Comentarios.
La forma de implementarlos depende del shell en el que se esté programando. Puede ser que un
programa escrito para el shell Bourne no funcione en el shell c, aunque las variaciones no sean
significativas.

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++, etc, que requieren
compilación y vinculación para producir un archivo ejecutable). El shell interpreta los programas
shell, si hay un error (sintaxis o ejecución) se despliega su respectivo mensaje como si se hubiera
escrito en la línea de comandos.

En el nivel más básico, un programa interpretado es típicamente rápido de escribir, modificar y


ejecutar. Los programas compilados típicamente requieren escritura, compilación, vinculación y
ejecución, por lo que consumen más tiempo de desarrollo y prueba.

Sin embargo, un programa compilado/vinculado es un archivo binario que contiene una colección
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.

Llamadas al sistema.
Método o función que puede invocar un proceso para solicitar un servicio al Sistema Operativo.

Programas Shell.

1. Primer programa, digite el siguiente código:


#!/bin/bash
# Programa que despliega en la pantalla un mensaje
echo “Este es mi primer programa en Linux”

Guarde el archivo como prueba. Luego en la línea de comandos escribir:


[usuario@linux ~]$ bash prueba
Este es mi primer programa en Linux

Explicación:
#!/bin/bash : se usa para indicar con cual shell debe correrse el programa shell.
Si se va a utilizar otro shell debe especificarse, por ejemplo C Shell debe usarse el #!/bin/csh.
Hay que tener en cuenta que #!/bin/<shell> DEBE ser la primera línea en el programa shell.

#Programa que despliega en la pantalla un mensaje: esta es la forma de poner comentarios en un


programa shell.

echo “Este es mi primer programa en Linux”: esta línea de hecho es un comando que ejecuta el
shell. echo es un comando para desplegar texto en la pantalla.
Otros editores de texto que posee Linux son (si están instalados por supuesto): vi/vim, emacs.

2. Usando variables.
El uso de las variables en un programa shell es sencillo, solo se escribe:
Nombrevariable = valor

Los resultados de los comandos pueden ser almacenados en las variables o pueden contener
líneas ejecutables.
Ejemplo, escriba el siguiente código en el editor de texto:
#!/bin/bash
var="ls –l"
echo $var
var=`ls –l`
echo $var

Este signo $ es usado siempre para mandar el contenido de la variable a la salida estándar.
Existe también la comilla de ejecución `.
Al usar las dobles comillas “", se imprime el contenido de la variable var.
Al usar la comilla simple ` (ejecución de comando), el comando ls –l es ejecutado y el resultado
es guardado en la variable.

[usuario@linux ~]$ bash prueba


ls –l
drwxr–xr–x 2 root root 4096 jul 17 2007 bin

dsfdsfdfdrwxr–xr–x 3 root root 4096 jun 7 2007 boot


drwxr–xr–x 12 root root 3920 jun 19 01:32 dev
drwxr–xr–x 98 root root 12288 jun 19 01:33 etc
drwxr–xr–x 3 root root 4096 jun 7 2007 home
drwxr–xr–x 11 root root 4096 jul 17 2007 lib
drwx–––––– 2 root root 16384 jun 7 2007 lost+found
drwxr–xr–x 33 root root 16384 dic 31 1969 media
drwxr–xr–x 2 root root 4096 feb 10 2006 misc
drwxr–xr–x 6 root root 4096 jul 21 2007 mnt
drwxr–xr–x 2 root root 4096 jul 14 2008 montajes
drwxr–xr–x 2 root root 0 jun 19 01:29 net
drwxr–xr–x 2 root root 4096 feb 11 2006 opt
dr–xr–xr–x 112 root root 0 jun 18 19:27 proc
drwxr–x––– 24 root root 4096 jun 19 01:31 root
drwxr–xr–x 2 root root 12288 jul 17 2007 sbin
drwxr–xr–x 3 root root 0 jun 18 19:27 selinux
drwxr–xr–x 2 root root 4096 feb 11 2006 srv
drwxr–xr–x 11 root root 0 jun 18 19:27 sys
drwxrwxrwt 17 root root 4096 jun 19 03:42 tmp
drwxr–xr–x 16 root root 4096 oct 22 2007 usr
drwxr–xr–x 25 root root 4096 jun 7 2007 var

Variables prede£inidas.
Muchas variables predefinidas son establecidas durante el proceso de inicio de sesión, ejemplo
$USER, nombres que no siempre son estándar de un sistema a otro. Sin embargo, muchas
variables shell predefinidas son manejados en todos los sistemas.

Variable Uso
$0 el nombre del script
$1 a $9 parámetros del 1 al 9
${10}, ${11},... parámetros por encima del 10
$# número de parámetros
$*, $@ todos los parámetros

Ejemplo. Archivo script suma


#!/bin/bash
# Uso de variables predefinidas. Nombre de Archivo: parámetros
var=`expr $1 + $2 + $3`
echo “la respuesta es $var"

[usuario@linux ~]$ bash parametros 40 15 60

¿Cual es la salida del siguiente script?


#!/bin/bash
# Nombre de archivo : nueveparametros
echo “$1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12"
echo $*
echo $#

[usuario@linux ~]$ bash nueveparametros 40 15 60 12 23 78 100 23 63 20

Para que se utiliza $* y $#? Investigar la diferencia en uso de ambas variables internas.
$* : todos los parametros
$# : numero de parámetros
Salidas y entradas básicas.
Con el comando echo se despliegan datos en la salida (monitor); para pedir datos existe el
comando reclearad.

#!/bin/bash
echo “Digite cualquier cosa :"
read a
echo “la variable introducida fue : $a"

Existen (al igual que en c/c++) caracteres de escape que pueden ser utilizados en los programas
shell. Estos son:
\a : sonido
\b : backspace
\n : nueva línea
\t : tab horizontal
\\ : backslash

NOTA : el comando echo interpreta los backslashes como cadena de caracteres, para que los
caracteres de escape funcionen debe usar el modificado –e.

Ejemplo:
#!/bin/bash
echo “Digite su nombre :"
read a
echo “Gracias por utilizar este programa \n $a"
echo –e “Gracias por utilizar este programa \n$a"

Uso de i£
Se utiliza para probar el estado de un comando. Su sintaxis es:
Los operadores && y || son AND y OR respectivamente.
Si se quiere comparar una expresión se debe usar [ expresión ], así:

if [ expresión ]
then
// lo que hay que hacer
fi

Ejemplo 1:
#!/bin/bash
# Archivo : estado
#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

Ejemplo 2:
#!/bin/bash
# Archivo : expresion
#Uso del if evaluando una expresión
if [ "$1" = "3" ]
then
echo "SI, es la guía numero 2"
else
echo "NO, esta es la guía 2"
fi
En la línea de comando escriba: [usuario@linux ~]$ bash expresion 2
Otras expresiones:
Cadena1 != Cadena2 : diferente de
–z Cadena1 : longitud de la cadena es 0
–n Cadena1 : longitud de la cadena no es 0

Numero1 –eq Numero2 : es igual


Numero1 –ne Numero2 :d
iferente de
Numero1 –gt Numero2 : mayor que
Numero1 –ge Numero2 : mayor o igual que
Numero1 –lt Numero2 : menor que
Numero1 –le Numero2 : menor o igual que

Uso de case
Case se usa para comparar valores contra una lista de patrones. Su sintaxis es:

case valor in
Patrón 1) comando
Mas comandos ;;
Patrón 2) comando
Mas comandos ;;
Patrón n) …
esac

Ejemplo:
#!/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

Ejercicio Investigue:
Realizar un programa que determine el peso ideal de una persona con base a su edad y estatura.

Вам также может понравиться