Está en la página 1de 24

SISTEMAS OPERATIVOS

Programacin con Bash Shell


GNU-Linux

Jairo Armando Riao Herrera

Conocer el entorno
Averiguar cul es el shell de trabajo

echo $SHELL

Listar los shells disponibles

cat -n /etc/shells

Conocer la versin del Bash

echo $BASH_VERSION

Conocer donde est instalado el


Bash

whereis bash

Variables especiales
$$

Nmero de proceso del Shell script en el que se est


utilizando

$0

Nombre completo del shell script en que se est


utilizando

$1..$9

$n hace referencia al n-simo argumento de la lnea


de comandos

$?

El cdigo de retorno del ltimo comando ejecutado

$#

Nmero de argumentos

$*

Lista de todos los arguementos

Shell Script

Un shell script es un archivo, normalmente .sh,


que contiene comandos del sistema operativo y
se puede ejecutar desde el smbolo del sistema.
Soportan estructuras condicionales e iterativas.
Para ejecutar un shell script se puede con el
comando bash nombre.sh o modificar el
permiso de ejecucin para ejecutarlo como una
orden normal del sistema ( chmod ugo+x
nombre.sh )

Argumentos
Un Script puede leer argumentos que se
introducen despus del nombre del script. Para
hacer referencia al argumento dentro del script se
usa el smbolo $ y el nmero de su posicin en la
lnea de comandos enumerados a partir del 1 ($1,
$2,... $n). El argumento $0 contiene el nombre
del script.
$# Contiene el nmero de argumentos
$* Hace referencia a todos los argumentos

Script Ejemplo de Argumentos

Operadores
-

ARITMETICOS
Resta

RELACIONALES
< Menor que

Suma

>

Mayor que

Multiplicacin

<=

Menor o igual

Divisin

>=

Mayor o igual

Resto

==

Igual

!=
LOGICOS
&& Y Lgico
||

O Lgico

Diferente

Suma de Argumentos

Entrada de Valores

La orden test
Permite evaluar una expresin, si el resultado es
verdadero, test devuelve un estado de salida 0
(cero). Si la expresin es falsa, test devuelve un
estado no cero.
Test permite evaluar cadenas, enteros, y el
estado de archivos del sistema operativo.
test expresin
o
[ expresion ]

Comprobacin de enteros
n1 -eq n2

Verdadero si n1 y n2 son iguales

n1 -ne n2

Verdadero si n1 y n2 no son iguales

n1 -gt n2

Verdadero si n1 es mayor que n2

n1 -ge n2

Verdadero si n1 es mayor o igual que n2

n1 -lt n2

Verdadero si n1 es menor que n2

n1 -le n2

Verdadero si n1 es menor o igual que n2

Comprobacin de cadenas
-z cadena

Verdadero si longitud de cadena es cero

-n cadena

Verdadero si longitud de cadena no es cero

cadena1 =
cadena 2

Verdadero si cadena1 y cadena2 son identicas

cadena1 !=
cadena 2

Verdadero si cadena1 y cadena2 no son


identicas

cadena1

Verdadero si cadena1 no es nula

Comprobacin de archivos
-a archivo

Verdadero si existe archivo

-r archivo

Verdadero si existe archivo y puede leerse

-w archivo

Verdadero si existe archivo y puede escribirse

-x archivo

Verdadero si existe archivo y es ejecutable

-f archivo

Verdadero si existe archivo y un archivo regular

-d archivo

Verdadero si existe archivo y es un directorio

-h archivo

Verdadero si existe archivo y es un enlace simblico

-c archivo

Verdadero si existe archivo y es un archivo de


caracteres especiales

-b archivo

Verdadero si existe archivo y es de bloque

-p archivo

Verdadero si existe archivo y es un cauce con nombre

-s archivo

Verdadero si existe archivo y su tamao es mayor a 0

Estructuras de Control

if..then..fi
if condicion
then
sentencias
elif condicion
then
sentencias
else
sentencias
fi

Ejemplos condicionales (1)

Ejemplos condicionales (2)

Condicional validar parmetros

Ejercicios
Script que recibe un valor entero como
parmetro, valide que el nmero de parmetros
es vlido y visualice si el nmero es PAR o
IMPAR
Script que lee un valor entero y visualice si el
nmero es PAR o IMPAR
Script que reciba cmo parmetros el nombre y
edad de una persona, valide el nmero de
parmetros y visualice un saludo indicando si la
persona es un INFANTE (0..11), ADOLESCENTE
(12..17), ADULTO (18..65) o ADULTO MAYOR
(>65)

Operadores de Cadena
Operadores de Sustitucin
$ { var:-valor }

Si var existe y no es nula retorna su valor, sino


retorna valor

$ { var:+valor }

Si var existe y no es nula retorna valor, sino, retorna


una cadena nula

$ { var:=valor }

Si var existe y no es nula retorna su valor, sino


asigna valor a var y retorna su valor
$ { var:?mensaje} Si var existe y no es nula retorna su valor, sino
imprime mensaje y termina el script.
$ { var:offset:long} Retorna una subcadena de var que empieza en
offset hasta long caracteres

Ciclos
(for)
Ejecuta una lista de
rdenes una vez para
cada miembro de una
lista. Es diferente a los
bucles tradicionales y se
parece ms al bucle for
each de otros lenguajes

for var [ in lista ]


do
rdenes
done

Ciclos
(while / until)
Las rdenes while y until, proporcionan una forma simple de
ejecutar un bucle un nmero de veces basado en la validacin
del resultado de un comando

while comando
do
rdenes
done

until comando
do
rdenes
done

Sentencias select / case


Un case permite realizar una seleccin mltiple, validando el
valor de una variable. El select permite crear men de
opciones de una forma sencilla

Ejercicios

Escribir en bash shell un Algoritmo que reciba un argumento


numrico de entrada, si no se suministra, tomar un valor por
defecto (sustitucin), y visualizar la suma y cuenta de
nmeros pares que hay desde 1 hasta el parmetro.
Escribir un script en bash shell que reciba un nmero
cualquiera de nombre de usuarios como parmetros y los
busque en el archivo de usuarios del sistema
Escribir un script en bash shell que visualice un men de
cinco opciones de comandos del Sistema Operativo
(cualquieras) y realice las acciones de la opcin. Una de las
acciones es salir del men.

También podría gustarte