PDF de programación - tema 11 linux shell scripts

Imágen de pdf tema 11 linux shell scripts

tema 11 linux shell scriptsgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 11 de Octubre del 2017)
1.636 visualizaciones desde el 11 de Octubre del 2017
1,0 MB
31 paginas
Creado hace 10a (19/06/2013)
IMPLANTACIÓN DE SISTEMAS OPERATIVOS.CURSO 12/13





Nuestro primer script. ............................................................................................................2
Uso de Variables en los Scripts. Expansiones. ......................................................................3
$(orden).................................................................................................................................3
$((operación aritmética)) .......................................................................................................4
let. bc. ...................................................................................................................................5
Funciones. ................................................................................................................................6
Estructuras Condicionales. ....................................................................................................8
If. ..........................................................................................................................................8
If..else ................................................................................................................................. 10
if..elif..else .......................................................................................................................... 10
Case. ................................................................................................................................... 14
Estructuras iterativas. (Bucles). ........................................................................................... 16
For. ...................................................................................................................................... 16
while y until ........................................................................................................................ 20
select ................................................................................................................................... 22
Paso de parámetros a un script. ........................................................................................... 25
Valores devueltos por las órdenes. ...................................................................................... 26
Un script completo de ejemplo ............................................................................................ 28
Ejercicios sobre scripts. ........................................................................................................ 30



TEMA 11

Página. 1



I.S.O. Linux. Shell Scripts.

© Creative Commons

IMPLANTACIÓN DE SISTEMAS OPERATIVOS.CURSO 2012/2013


NUESTRO PRIMER SCRIPT.

Los scripts no son más que ficheros de texto ASCII puro, que pueden ser creados con cualquier
editor del que dispongamos (vi, nano, gedit, emacs, etc.). Cread un fichero de texto de
nombre primero.sh, con el siguiente contenido:


#!/bin/bash
echo “Hola Mundo”


La primera línea sirve para indicar que shell utilizamos (en nuestro caso bash) y donde puede
locate bash). Esta línea
ser encontrado en nuestro sistema (para saberlo, podemos hacer
debe ser la primera de todos los scripts que realicemos.
La segunda línea de nuestro script, simplemente utiliza el comando para escribir en pantalla
(echo) y escribe la línea Hola Mundo.

Una vez creado el fichero, debemos darle permisos de ejecución, mediante el comando


chmod a+x primero.sh


Posteriormente para ejecutarlo debemos llamarlo como ./permiso.sh (el punto barra es para
indicarle que lo busque en el directorio actual, ya que dicho directorio no estará seguramente
incluido en el PATH del sistema).

Si queremos ejecutar un script para comprobar cómo funciona sin hacerlo ejecutable,
podemos hacerlo mediante el comando source primero.sh que permite lanzar un script no
ejecutable. La orden source también puede ejecutarse simplemente escribiendo un punto
como hemos visto en el tema anterior.

Sin embargo, la orden source solo debe
tengamos el script completo y depurado debemos darle sus permisos de ejecución
correspondientes.

Las comillas dobles que hemos usado para escribir Hola Mundo no son necesarias, y podéis
comprobar como quitándolas el proceso se ejecuta exactamente igual. Sin embargo, es una
buena práctica encerrar siempre los textos entre comillas dobles, y en caso de que contengan
caracteres especiales (como el *, el $, etc.), es mejor usar comillas simples, que son más
potentes que las comillas dobles. Probad lo siguiente:


usarse para comprobar el script, una vez que

echo esto es un asterisco * sin comillas
echo esto es un dólar y tres letras $ABC sin comillas
echo “esto es un asterisco * entre comillas dobles”
echo ‘esto es un asterisco * entre comillas simples’
echo “esto es un dólar y tres letras $ABC entre comillas dobles”
echo ‘esto es un dólar y tres letras $ABC entre comillas simples’


Si tenemos que ejecutar varias líneas y queremos escribirlas en una sola, podemos hacerlo
usando el símbolo punto y coma para indicar que lo siguiente es otra línea, aunque este en la
misma:


echo Hola ; pwd ; echo Adios # esto son tres líneas en una sola.


TEMA 11


Página 2

I.S.O. Linux. Shell Scripts.

IMPLANTACIÓN DE SISTEMAS OPERATIVOS.CURSO 2012/2013


También podemos hacer lo contrario, escribir una sola línea en varias. Para ello usamos el
carácter contrabarra cuando queramos que nuestra línea se “rompa” y continué en la línea de
abajo.


echo esto \
es una sola línea \
aunque ocupe 3 en pantalla. # esto es una linea escrita en tres.


En estos últimos ejemplos he aprovechado para mostraros como se pueden usar comentarios
en los scripts. Basta con usar el símbolo almohadilla (#) donde queramos, todo lo que quede a
la derecha de dicho símbolo es un comentario. Si usamos # como primer carácter de una línea,
toda la línea es de comentario.

USO DE VARIABLES EN LOS SCRIPTS. EXPANSIONES.

Las variables de los shell scripts son muy simples, ya que no tienen tipo definido ni necesitan
ser declaradas antes de poder ser usadas. Para introducir valor en una variable simplemente se
usa su nombre, y para obtener el valor de una variable se le antepone un símbolo dólar.


#!/bin/bash
DECIR=”Hola Mundo”
echo $DECIR


Este script realiza exactamente la misma función que el anterior, pero usando una variable.

Cualquier valor introducido en una variable se considera alfanumérico, así que si realizamos lo
siguiente:


NUMERO=4 # No se debe dejar ningún espacio en la asignación.
echo NUMERO+3


Obtendremos por pantalla la cadena de caracteres 4+3.


$(ORDEN)

En Linux podemos usar varias expansiones en las líneas de comandos, que son especialmente
$( ). Esta expansión permite
útiles en los scripts. La primera expansión consiste en usar
ejecutar lo que se encuentre entre los paréntesis, y devuelve su salida.


echo pwd

echo $(pwd)

# escribe por pantalla la palabra pwd
# ejecuta la orden pwd, y escribe por pantalla su
resultado.


Así, por ejemplo, la siguiente instrucción copia el fichero /etc/network/interfaces en el
directorio actual con el nombre red290411.conf (suponiendo que estamos en la fecha 29 de
Abril de 2011).


NOMBRE_FICHERO=”red”$(date +%d%m%y)”.conf”
cp /etc/network/interfaces $NOMBRE_FICHERO


TEMA 11


Página 3

I.S.O. Linux. Shell Scripts.

IMPLANTACIÓN DE SISTEMAS OPERATIVOS.CURSO 2012/2013

Como es lógico, es perfectamente posible no usar variables en el ejemplo anterior y hacerlo
todo en una línea, pero es una buena práctica no complicar excesivamente cada una de las
líneas del script.
Esto nos permitirá una modificación mucho más simple y la depuración en caso de que existan
errores suele ser bastante más rápida, al menos mientras nuestro nivel de programación no
sea bastante alto.

El efecto conseguido con $( orden ) se puede conseguir también usando la tilde invertida
`orden`.



$((OPERACIÓN ARITMÉTICA))

Otra expansión que podemos usar es $(( )) (símbolo dólar pero con dos paréntesis). Los dobles
paréntesis podemos sustituirlos si queremos por corchetes. $[ ].

Esta expansión va a tratar como una expresión aritmética lo que esté incluido entre los
paréntesis, va a evaluarla y devolvernos su valor.


NUMERO=4
echo $(($NUMERO+3)) # sería lo mismo poner echo $[$NUMERO+3]


Obtenemos en pantalla el valor 7.

Aprovecho para explicar el comando
como la anterior, pero sin tener que usar expansiones ni dólares para las variables.


let, que nos permite realizar operaciones aritméticas

NUMERO=4
let SUMA=NUMERO+3
echo $SUMA


Obtenemos el mismo valor 7, y como vemos no hemos usado ni dólar, ni paréntesis.

Los operadores aritméticos que podemos usar para realizar operaciones son: Resta (-), Suma
(+), División (/), Multiplicación (*) y Modulo o Resto (%).



TEMA 11


Página 4

I.S.O. Linux. Shell Scripts.

IMPLANTACIÓN DE SISTEMAS OPERATIVOS.CURSO 2012/2013

LET. BC.

Cread con nano un fichero con nombre media.sh con el siguiente contenido:















let MEDIA=SUMA/3

MEDIA=$[ $SUMA / 3 ]


Haced ejecutable media.sh y ejecutadlo. Si lo habéis escrito bien veréis como realmente os da
la media aritmética de las tres notas introducidas.

La línea


Podría haberse escrito también como


Si ejecutamos el script, veremos que hay un problema, podéis comprobar como bash no
trabaja con decimales, de modo que si introducimos por ejemplo 10, 10 y 6 nos dirá que la
media es 8, mientras que la media realmente es 8,66.

Podemos obligar a que bash trabaje con decimales utilizando un comando que sirve como
calculadora en Linux, este comando es bc. Este comando admite un gran número de
parámetros, pero en estos apuntes vamos a usarlo simplemente par
  • Links de descarga
http://lwp-l.com/pdf7175

Comentarios de: tema 11 linux shell scripts (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad