0% encontró este documento útil (0 votos)
6 vistas33 páginas

Guía de Programación en Shell Script

.

Cargado por

0hailgrasa330
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
6 vistas33 páginas

Guía de Programación en Shell Script

.

Cargado por

0hailgrasa330
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Departamento de Informática y Comunicaciones – I.E.S.

Oretania

UD 5. Sistema
operativo GNU-Linux
Programación de script

Profesora: Paula Lérida Arboledas

Departamento de Informática y Comunicaciones – I.E.S. Oretania


Departamento de Informática y Comunicaciones –I.E.S. Oretania

Ciclo de construcción de un script


1. Edición del shell-script:
vi [Link]
2. Cambio a ejecutable:
chmod a+x [Link]
3. Ejecutar el script:
./[Link]
Departamento de Informática y Comunicaciones –I.E.S. Oretania

El Shell como intérprete de órdenes


 Redireccionamientos:
• > salida
• < entrada
• >> adición
 Tuberías o pipeline |: redirige la salida de un comando como entrada de otro comando
 Otros:
• *: sustituye cualquier grupo de caracteres, desde 0 a varios
• ?: sustituye a un solo carácter
• &: indicador de procesos background
• ; separador de comandos (para ejecutar varios comandos en una misma línea)
• \ indica que el comando sigue en la siguiente línea
• $: hace referencia al contenido de una variable
• : línea de comentarios
Departamento de Informática y Comunicaciones –I.E.S. Oretania

El Shell como lenguaje de programación

 Comando echo:
• Imprime un texto en el terminal
• Ejemplo: muestra por pantalla el usuario de la sesión actual y la fecha del sistema, insertando
también un retorno de carro
[Link]
!/bin/bash
clear
echo –e “El usuario actual es `whoami`. \n La fecha actual es `date`”
Departamento de Informática y Comunicaciones –I.E.S. Oretania

El Shell como lenguaje de programación


 Variables:
• Asignación de valor a una variable:
nombre_variable=valor
• Para almacenar en una variable la salida o ejecución de un comando se usan las comillas inverīidas o acenīos
graves:
nombre_variable=`comando`
• O īambién: nombre_variable=$(ls –l)
• Una variable en bash puede conīener:
• Número
• Carácīer
• Cadena de caracīeres
• No es necesario declarar la variable, sólo asignar un valor a su referencia la crea
• Para obīener el valor que almacena una variable:
$nombre_variable
Departamento de Informática y Comunicaciones –I.E.S. Oretania

El Shell como lenguaje de programación


 Comillas invertidas o Acentos graves:
• Podemos asignar a una variable el resultado de la ejecución de un comando:
ESTOY_EN=`pwd`
echo $ESTOY_EN
/home/estudiante
 Comillas simples y dobles:
• “$LOGNAME”: con comillas dobles y $variable, se tomará el contenido de la
variable: ǪUIENSOY=“Soy el usuario $LOGNAME”
echo $ǪUIENSOY
Soy el usuario esīudianīe
• ‘$LOGNAME’: con comillas simples y $variable no se evalúa la variable, es īomada
como un liīeral
Departamento de Informática y Comunicaciones –I.E.S. Oretania

El Shell como lenguaje de programación


 Comando read:
• Permite insertar en una variable un texto mientras se está ejecutando el script
• Sintaxis: read [opciones] nombre_variable1 nombre_variable2 … nombre_variablen
• Opciones:
• -n num_caracteres: número máximo de caracteres que se pueden introducir
• -p “frase”: muestra por pantalla una frase para saber qué debes introducir
• Ejemplo:
echo “Introduce tu nombre”
read nombre
echo “Hola, $nombre”
• Ejemplo:
read –p “Introduce tu nombre y apellidos” nombre apellidos
echo “Hola, $nombre $apellidos”
Departamento de Informática y Comunicaciones –I.E.S. Oretania

El Shell como lenguaje de programación


 Expresiones:
• Como en todos los lenguajes de programación, es
posible realizar operaciones aritméticas:
• expr:
• SUMA=$(expr $var1 + $var2)
• SUMA=$(($var 1 + $var2))
• let SUMA=($var1 + $var2)
• Operadores: +, -, *, /, %, …
• Los operadores deben ir separados por espacios del resto
de caracteres
Departamento de Informática y Comunicaciones –I.E.S. Oretania

El Shell como lenguaje de programación


• Operaciones aritméticas
expr num1 + num2 -> Devuelve la suma de num1 + num2
expr num1 - num2 -> Devuelve la resta de num1 - num2
expr num1 \* num2 -> Devuelve el producto de num1 * num2
expr num1 ** num2 -> Devuelve la potencia
expr num1 % num2 -> Devuelve el módulo
expr num1 / num2 -> Devuelve la división de num1 / num2
expr num1 >= num2 -> Devuelve 0(true) si num1 >= num2
expr num1 > num2 -> Devuelve 0(true) si num1 > num2
expr num1 <= num2 -> Devuelve 0(true) si num1 <= num2
expr num1 < num2 -> Devuelve 0(true) si num1 < num2
expr num1 != num2 -> Devuelve 0(true) si num1 es distinto de num2
Departamento de Informática y Comunicaciones –I.E.S. Oretania

El Shell como lenguaje de programación


 Parámetros especiales:
• $0: contiene el nombre del script invocado
• $*: el conjunto de todos los parámetros en un solo argumento
• $ : número de argumentos pasados al script
• $?: el código de retorno del último comando:
• 0 si ha ido bien, 1 si ha habido error
• 0 si es verdadero, 1 si es falso
• $$: el PID del Shell que ejecuta el script
• $!: el PID del último proceso ejecutado en segundo plano
Departamento de Informática y Comunicaciones –I.E.S. Oretania

El Shell como lenguaje de programación


 La orden shift mueve toda la lista de parámetros de entrada una posición a la izquierda, esto hace que el
contenido del parámetro $1 desaparezca, y sea reemplazado por el contenido de $2, que $2 sea reemplazado por
$3, y así sucesivamente
 Ejemplo: muestra todos los parámetros pasados; si encuentras una “f”, se lo salta y continúa el bucle
!/bin/bash
while [ $ -gt 0 ]
do

if [ $1 = “f” ]
then
shift
continue
fi
echo Parámetro: $1
shift
done
Departamento de Informática y Comunicaciones –I.E.S. Oretania

El Shell como lenguaje de programación


 Cadenas de texto:
• Operaciones con cadenas:
expr length cadena  nº de caracteres de la cadena
expr index cadena_donde_busca cadena_a_buscar  devuelve la posición donde
encuentra los caracteres a buscar dentro de la cadena, si no, devuelve un 0

Ejemplo:
frase=“maravilloso”
echo “La longitud de la cadena es `expr length $frase`”
read –p “Introduce alguna cadena a buscar” buscar
echo “Los caracteres $buscar se encuentran en la posición `expr index $frase
$buscar`”
Departamento de Informática y Comunicaciones –I.E.S. Oretania

El Shell como lenguaje de programación


 expr substr cadena posicion n_caracteres  extrae de una
cadena una subcadena de la cadena indicada a partir de esa
posición y de longitud ese número de caracteres
 Ejemplo:
read –n 9 –p “Introduce tu N I F (Formato: 00000000A) \n” nif
echo “El D N I de $nif es `expr substr $nif 1 8 ` “
echo “la letra del $nif es `expr substr $nif 9 1`”
Departamento de Informática y Comunicaciones –I.E.S. Oretania

El Shell como lenguaje de programación


 Operadores comparativos
• Cuando necesitamos que nuestros scripts tomen decisiones las tomarán
comparando valores
• En programación shell se utilizan los corchetes [ ] para delimitar la
expresión de comparación
• Comparaciones numéricas:
Departamento de Informática y Comunicaciones –I.E.S. Oretania

El Shell como lenguaje de programación


 Comparaciones alfanuméricas o cadenas de caracteres:
Departamento de Informática y Comunicaciones –I.E.S. Oretania

El Shell como lenguaje de programación


 Operaciones con ficheros:
Departamento de Informática y Comunicaciones –I.E.S. Oretania

El Shell como lenguaje de programación


 Las expresiones lógicas pueden combinarse para formar expresiones más
complejas
 Para ello utilizaremos los operadores:
• && (Y lógico)
• || (O lógico)
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Estructuras condicionales
• if:
• La estructura if nos permite ejecutar un bloque de acciones si se cumple
una determinada condición, de lo contrario nos permite ejecutar otro
bloque de acciones identificado por la sentencia else
• Sintaxis:
if [ condición ]
then
bloque de comandos
else
bloque de comandos
fi
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Estructuras condicionales
Ejemplo 13: script que comprueba si dos parámetros son iguales

if [ $1 = = $2 ]
then
echo “Los parámetros son iguales”
else
echo “Los parámetros no son iguales”
fi
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Estructuras condicionales
 if anidados: if … elif (else if) … fi
if [ condición1 ]
then
bloque de comandos si se cumple condición1
elif [ condición2 ] ; then
bloque de comandos si se cumple condición2
else
bloque de comandos si no se cumple ni condición1 ni
condición2
fi
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Estructuras condicionales
 Sentencia case:
• Se utiliza cuando el valor de una variable ha de ser contrastado con varios
valores. Su sintaxis es la siguiente:

case expresion in
caso1) comandos ;;
caso2) comandos ;;
*) comandos ;;
esac

• Esta estructura sirve para que evaluar expresión en todos sus posibles valores, y realizar
distintas acciones en cada uno de ellos
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Ejemplo: comprueba qué tecla has pulsado

#! /bin/bash
clear
read –n 1 –p “Pulsa una tecla” tecla
case $tecla in
[ a-z, A-Z ] ) echo “Ha introducido una tecla” ; ;
[ 0-9 ] ) echo “Ha introducido un número” ; ;
* ) echo “Ha introducido un carácter especial” ; ;
esac
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Estructuras condicionales
• Sentencia select:
• Tener que poner tantos echo es bastante molesto, por eso hay un comando que
te ahorra hacer ese esfuerzo: select

select variable in “caso 1” “caso 2” “caso N”


do
break # solo muestra una vez el menú
done
case $variable in
“caso 1”) comandos ; ;
“caso 2”) comandos ; ;
“caso N”) comandos ; ;
esac
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Estructuras condicionales
• Cuando se usa select no hace falta pedir que introduzcas nada, ya que eso
lo hace automáticamente.
• El prompt que te muestra select es #? pero se puede cambiar poniendo otro
valor a PS3.
PS3=“Introduce una opción:”
select choise in “1. Ejemplo de menú uno” “2. Ejemplo de menú dos”
do
case $ R E P LY in
1 ) comando1 ; break ; ;
2 ) comando2 ; break ; ;
* ) echo “NO has introducido ni un dos ni un uno” ; ;
esac
Done
NOTA: la variable $ R E P LY contiene el índice de la elección
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Estructuras condicionales
• for:
• Esta estructura permite repetir un bloque de comandos asignando valores de
una serie a una variable en cada iteración.
• Su sintaxis es:

for variable in valor1 valor2…valorN


do
comando
done

• El bucle se ejecuta para cada uno de los valores que toma la variable en esa
lista:
for i in 1 2 3 4 5; do
echo $i
done
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Ejemplo: toma nombres de usuario del sistema que se le proporcionan


en una lista (antonio eva fernando joseba julio) y les envía un correo
utilizando como contenido del mismo el fichero [Link]

for a in antonio eva fernando joseba julio


do
mail $a < [Link]
done
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Ejemplo: otro ejemplo en el que nos ayudamos de la ejecución del


comando seq para cargar la variable:

#!/bin/bash

for variable in `seq 1 100`


do
echo $variable
done
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Otra de las particularidades de esta estructura es que puede ejecutarse


en forma de bucle:

for (( variable=valor; condicion; incremento))


do
comando
done

for (( i=1; i<=5; i++))


do
$i
done
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Estructuras condicionales
• while:
• Realiza un bucle mientras se cumpla una condición determinada. Realiza la
comprobación al principio:

while condicion
do
comandos
done

• Si en el while vas a poner una variable, debe declararse antes, ya que sino
no entra, se le puede dar cualquier valor
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Ejemplo: escribir el valor de una variable 10 veces,


después de incrementar su valor.

#! /bin/bash
num=0

while [ $num –le 10 ]; do


echo “\$num: $num”
num=$((num+1))
done
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Estructuras condicionales
• until:
•Funciona de forma similar a while solo que la forma de evaluar la condición es al revés, es
decir, se ejecuta mientras sea false la condición

#!/bin/bash
C O N TADOR=20
until [ $ C O N TA D O R -lt 10 ]; do
echo C O N TA D O R $ C O N TA D O R
CONTADOR -=1
done
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Estructuras condicionales
 Otros comandos para programar script:
• true: para crear bucles infinitos
• break: termina el bucle donde se encuentra
• continue: interrumpe la ejecución del bucle y vuelve al principio del mismo
• exit: termina la ejecución del script
• sleep num_segundos: hace una pausa los segundos indicados
Departamento de Informática y Comunicaciones –I.E.S. Oretania

Estructuras condicionales
 Ejemplo:
while true
do

if [ $a = 1 ]
then
break
fi

done

También podría gustarte