Lab8 Solucionado
Lab8 Solucionado
Lab8 Solucionado
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).
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 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.
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.
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.
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.
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
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
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.