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

UNIVERSIDAD PRIVADA ANTENOR ORREGO

SHELL SCRIPT EN LINUX

Ing. Jorge Jara

CONTENIDO

Introduccin a la programacin en Shell


Fundamentos de programacin con Shell Script
Comparacin de expresiones
Estructura de control de flujo condicional
Estructura de control de flujo iterativo

Ing. Jorge Jara

INTRODUCCIN A LA PROGRAMACIN EN SHELL

Definicin de un Shell Script


Importancia de los Shell Script
Cmo se ejecuta un Shell Script
Creacin y ejecucin de Shell Scripts

Ing. Jorge Jara

Definicin de un Shell Script


Shell Script es un grupo de comandos escritos en un
archivo de texto.
La programacin de la Shell consiste en automatizar
ciertas tareas del entorno del interprete de comandos
que son de utilidad para el usuario.
Los Scripts pueden contener variables, comandos de
e/s, sentencias condicionales e iterativo.
Los Scripts hacen uso de redireccionadores, los
cuales permiten transferir el flujo de e/s de un
comando a otro comando.
Ing. Jorge Jara

Importancia de los Shell Script


til para crear nuestros propios comandos.
Permite ahorrar tiempo.
Automatiza algunas tareas del trabajo diario.
Parte de la administracin del sistema puede ser
automatizada.

Ing. Jorge Jara

Cmo se ejecuta un Shell Script


Usar algn editor como por ejemplo vi para escribir
shell script.
Despus de guardar el shell script, asignar el permiso
execute para tu script como sigue:
chmod +x nombre-script
Ejecutar tu script, como por ejemplo:
./nombre-script

Ing. Jorge Jara

Creacin y ejecucin de Shell Scripts


$ vi ejemplo1
#
# Mi primer shell script
#
clear
echo Hola Mundo."
Guardar el script, luego asignarle el permiso respectivo
y finalmente ejecutar el script como

sigue:

$ ./ejemplo1

Ing. Jorge Jara

Comandos del Script

Descripcin

$ vi ejemplo1

Inicia el editor vi

#
# M i primer shell script
#

# seguido por cualquier texto es


considerado como un comentario. Los
comentarios proveen ms informacin
acerca de un script, explicacin lgica
sobre
un
shell
script.
Sintaxis:
# comentario

clear

Limpia la pantalla

Para imprimir mensajes o valores de


variables en pantalla, usamos el comando
echo Hola Mundo..........."
echo , La forma general del comando echo
es: echo "Mensaje"
Ing. Jorge Jara

FUNDAMENTOS DE PROGRAMACIN CON SHELL SCRIPT

Manejo de variables en Shell


Parmetros posicinales
Entrecomillado
Expresiones aritmticas
Lectura de datos desde la entrada estndar

Ing. Jorge Jara

Parmetros posicionales
Es posible escribir un shell script que tome un nmero
de parmetros desde la lnea de comandos, estas
opciones se las proporciona Linux al programa shell
como parmetros posicionales.
La forma de pasar estos comandos es con los
parmetros posicionales $1 hasta $9. Cada parmetro
corresponde a la posicin del argumento en la lnea de
comandos.

Ing. Jorge Jara

El parmetro posicional $0 hace referencia al nombre


del comando o nombre del fichero ejecutable que
contiene el shell script.
Solo se pueden pasar nueve argumentos, pero se
puede acceder a mas de nueve usando el comando
shift. Cada vez que se ejecuta el comando shift el
argumento 1 desaparece, el 2 se convierte en el uno, y
as sucesivamente hasta el 9 que se convierte en el 8
quedando aquel libre.

Ing. Jorge Jara

Manejo de variables en Shell


Las variables se pueden englobar en tres tipos
principales:
Variables de entorno
Variables incorporadas
Variables de usuario

Ing. Jorge Jara

Variables de entorno
Creadas y mantenidas por Linux. Este tipo de variables son
definidas en LETRAS MAYUSCULAS.
Ejemplos de variables de entorno:

Descripcin

Variables de Entorno
BASH=/bin/bash

Nombre del shell

BASH_VERSION=1.14.7(1)

Nombre de la versin del shell

HOME=/home/sisope

Directorio home

LOGNAME=sisope

Nombre de Inicio de sesin

OSTYPE=Linux

Tipo de Os

PATH=/usr/bin:/sbin:/bin:/usr/sbin

Ruta establecida

PWD=/home/sisope/Jorge

Directorio de trabajo actual

SHELL=/bin/bash

Nombre del shell

USERNAME=sisope

Nombre de Usuario que


iniciado sesin en esta PC

ha

Ing. Jorge Jara

Si se modifica el valor de una variable, este permanece


hasta que efectas el logout del sistema o sales del
shell en el cual estas trabajando.
Para mostrar el valor de una variable, usar el comando
echo seguidos por el signo dollar($) y el nombre de la
variable. Es decir si el nombre de la variable es
SHELL, puede mostrar el valor de la variable usando:
echo $SHELL
Para asignar un valor a una variable:
myname=jorge
Ing. Jorge Jara

Variables incorporadas (Built in)


Las variables incorporadas son unas variables especiales
proporcionadas por el sistema Linux, a diferencia de las
variables de entorno, no se pueden modificar.
Algunas de estas variables son:

Variables
Built in

Descripcin

$#

Nmeros de parmetros posicionales

$*

Una cadena de todos los argumentos pasados en el


momento que se invoca el programa shell.

$@

Lo mismo que el anterior

$0

El nombre del programa shell

$$

PID del shell

$!

PID del ultimo comando ejecutado en el background


(iniciado con &)

Ing. Jorge Jara

Ejemplo de variables incorporadas, aqu tiene un programa


llamado ejemplo2:
#mi programa de prueba
echo El nmero de parmetros es $#
echo El nombre del programa es $0
echo Los parmetros como una sola cadena es $*
Ejecutar ejemplo2 desde la lnea de comandos de la siguiente manera:
./ejemplo2 jorge silena
Se obtendr el siguiente resultado:
El nmero de parmetros es 2
El nombre del programa es ejemplo2
Los parmetros como una sola cadena es jorge silena
Ing. Jorge Jara

Variables de usuario
Para usar variables definidas por el usuario usar la
siguiente sintaxis: nombre_variable=valor
Por ejemplo:
nro=10

Ing. Jorge Jara

Entrecomillado
Unos cuantos caracteres se merecen una nota especial. Son las comillas
doble ( ), las comillas simples ( ) y el acento inverso ( ).

Comillas

Nombre

Descripcin

"

Comillas Dobles

Si
una
cadena
contiene
espacios incrustados, puede
acercar la cadena en unas
comillas dobles.
Resuelven todas las variables
dentro de una cadena.

'

Comillas Simples

Para hacer que el shell deje de


resolver una variable.

Acento inverso

Puede usar un acento inverso ( ` )


para que el resultado de la
ejecucin de un comando se
almacene en una variable.

`
Ing. Jorge Jara

Expresiones aritmticas
El comando expr evala sus argumentos considerndolos como
una expresin y escribe el resultado sobre la salida estndar.
Sintaxis:

expr variable operador variable

Donde los operadores son:


suma

resta

multiplicacin *

Ejemplo 1:

divisin

resto

expr 13 + 49

El resultado de esta expresin es: 62


Ejemplo 2:

echo `expr 6 + 3`

Ing. Jorge Jara

Lectura de datos desde la entrada estndar


Para leer de la entrada estndar se utiliza el comando
read.
Ejemplo 3:
echo "Por favor introduzca su nombre:"
read nombre
echo "Bienvenido $nombre"
echo "Introduce tu apellido\n
echo "seguido de tu nombre: \c
read apellido nombre
echo "Bienvenido: $nombre $apellido
Ing. Jorge Jara

10

Ejercicios
Definir una variable vn con el valor jorge e imprimirlo por
pantalla.
Como definir dos variables x=40, y=8 y luego imprimir el
resultado de la divisin de x e y.
Modificar el ejercicio anterior y guardar el resultado de la divisin
de x e y en una variable z.
Crear un script que permita mostrar el nmero de parmetros,
nombre del script y los nombres de cada uno de los parmetros
posicinales pasados desde la lnea de comandos.
Elaborar un script que muestre en pantalla la hora actual, la
fecha, el nombre de inicio de sesion del usuario y el directorio
actual.
Ing. Jorge Jara

COMPARACIN DE EXPRESIONES

Comparacin de cadenas
Comparacin de nmeros

Ing. Jorge Jara

11

Comparacin de cadenas
Se pueden usar los siguientes operadores para comparar dos
expresiones de cadenas:

Operador
string1 = string2

Descripcin
string1 es igual a string2

string1 != string2 string1 no es igual a string2


string1

string1 no est vaca

-n string1

Evala si la longitud de string1 es


mayor que cero

-z string1

Evala si la longitud de string1 es


igual a cero

Ing. Jorge Jara

Comparacin de nmeros
Se pueden usar los siguientes operadores para comparar dos
nmeros:

Operador
Matemtico

Descripcin

Uso de
test con el
comando if

Uso de [expr]
con el
comando if

-eq

5 == 6

if test 5 -eq 6

if [ 5 -eq 6 ]

-ne

5 != 6

if test 5 -ne 6

if [ 5 -ne 6 ]

-lt

5<6

if test 5 -lt 6

if [ 5 -lt 6 ]

-le

5 <= 6

if test 5 -le 6

if [ 5 -le 6 ]

-gt

5>6

if test 5 -gt 6

if [ 5 -gt 6 ]

-ge

5 >= 6

if test 5 -ge 6

if [ 5 -ge 6 ]

Ing. Jorge Jara

12

ESTRUCTURA DE CONTROL DE FLUJO CONDICIONAL

La declaracin if
La declaracin if evala una expresin para tomar una
decisin. Una condicin if tiene el siguiente formato:
if [ expresin ] ; then
Declaraciones
elif [ expresin ] ; then
Declaraciones
else
Declaraciones
fi
Ing. Jorge Jara

La declaracin case
Se puede usar una declaracin case en lugar de una
declaracin if si se tiene un gran nmero de condiciones.
case $nombre-variable in
patron1 | patron2)
Declaraciones;;
patron3 | patron4)
Declaraciones;;
*)
Declaraciones;;
esac
Ing. Jorge Jara

13

ESTRUCTURA DE CONTROL DE FLUJO ITERATIVO

La declaracin for
La declaracin for dispone del siguiente formato:

for nombre _ variable in lista


do
declaraciones
done

Ing. Jorge Jara

La declaracin while
La declaracin while se puede usar para ejecutar una
serie de comandos mientras una condicin es verdadera

while [ condicin ]
do
declaraciones
done

Ing. Jorge Jara

14

Ejemplos
Escribir un script que permita determinar si un nmero es
positivo o negativo.

if [ $1 gt 0 ]
then
echo "$1 numero es positivo"
else
echo "$1 numero es negativo"
fi

Ing. Jorge Jara

Escribir un script que permita mostrar el nombre del mes si le


proporciona el nmero del mes como parmetro.
case $1 in
01 | 1) echo El mes es enero;;
02 | 2) echo El mes es febrero;;
03 | 3) echo El mes es marzo;;
04 | 4) echo El mes es abril;;
05 | 5) echo El mes es mayo;;
06 | 6) echo El mes es junio;;
07 | 7) echo El mes es julio;;
08 | 8) echo El mes es agosto;;
09 | 9) echo El mes es septiembre;;
10) echo El mes es octubre;;
11) echo El mes es noviembre;;
12) echo El mes es diciembre;;
*) echo Parmetro no vlido;;
esac
Ing. Jorge Jara

15

Ejercicios
Escribir un shell script que permita sumar dos nmeros, los
cuales son pasados a travs de la lnea de comandos.
Escribir un script que imprima la siguiente lista de nmeros 5, 4,
3, 2, 1.
Escribir un script que imprima todos los divisores de un nmero
pasado como argumento.

Ing. Jorge Jara

16

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