viernes, 23 de enero de 2015

Funciones

Uno de los mayores utilidades que posee una shell es el permitirnos crear funciones para realizar tareas repetitivas fácilmente.El funcionamiento de estas funciones es parecido al que posee cualquier lenguaje de programación, en el cual se agrupan conjunto de comandos y se los llama por un nombre.

Podemos definir funciones en un script de shell:

funcion() {
    comandos
}

 Para llamarla:

funcion p1 p2 p3




Siempre tenemos que definir la función antes de llamarla:

#!/bin/bash
# Definición de funciones 
funcion1() {
    comandos
}
funcion2() {
    comandos
}
# Programa principal 
funcion1 p1 p2 p3


Valores de entrada


#! /bin/bash
function suma() {
resultado=$(expr $a + $b)-----------------------Se pueden sustituir por $1 y $2 (y $3, $4…)
echo “La suma es “$resultado
}
a=5
b=10

suma $a $b-----------------------Se pueden sustituir por $1 y $2 (y $3, $4…




Valores de salida

Una función puede devolver ninguno, uno o más valores
Si no devuelve nada-Procedimiento
Si devuelve algo -función
Para devolver un valor -return

#! /bin/bash
function suma() {
resultado=$(expr $a + $b)
return $resultado
}
a=5
b=10
suma $a $b
c = $?---------------------------------------------------Toma el valor que devuelve el return
echo $c








Salida: String

Para devolver un string se usa un procedimiento
#! /bin/bash
convertir_en_hex() {
case $valor in
0) valor=“0”;;
1) valor=“1”;;
2) valor=“2”;;
10) valor=“A”;;
11) valor=“B”;;
12) valor=“C”;;
*) valor=“ERROR en la entrada”;;
esac
}
valor =2
convertir_en_hex $valor
echo “el resultado es $valor”


jueves, 22 de enero de 2015

Estructura de Control



Se denominan estructuras de control a aquellas que determinan qué instrucciones deben ejecutarse y qué número de veces.

Existen dos tipos de estructuras de control:

-Alternativas o de selección
-Repetitivas o de iteración.

Programación iterativa
  •  Una instrucción detrás de otra 
  •  En orden
  •  Sin saltarse ni repetir ninguna
Estructuras de control - Cambiar el flujo del programa

Estructuras

Condición simple

IF
  if condicion
  then
    Comandos
else
    Comandos
fi




Condición múltiple

Case $variable in
   valor1) comando1
                comando2
                …
                comandon;;
...
    *)         comando1
                comando2
                …
                comandon;;
esac






Repetición

while condicion
do
   comando1
   comando2
   …
done



Repetición contador

for ((expr1; expr2; expr3))
do
     comando1
     comando2
done






Ficheros
-Lo más habitual es leer los datos de un fichero que tiene muchas líneas








Operadores lógicos



Qué son:
Son  símbolos que se utilizan para darle a una búsqueda un orden lógico. 
Los operadores lógicos son los que se utilizan en la evaluación de condiciones lógica
(verdadero o falso),no se ha de confundir con los operadores booleanos, que son utilizado sobre
variables.

El comando expr
$ expr arg1 op arg2
Operaciones
                                                  
                                                   Tipos de operadores



El comando test
Evalúa archivos,cadenas y números
test –opción archivo
Opciones
$ test –f /etc/passwd
$ test 20 –lt 40
$ test [cadena1 !=cadena2]


lunes, 12 de enero de 2015

Programación en shell


Definición

La programación en shell  utiliza el  procesador de órdenes (shell) para poder desarrollar
programas básicos.

Un fichero de texto que se va a procesar por el shell se conoce normalmente

por shell script. Es habitual que los shell scripts tengan la extensión .sh.

El intérprete de comandos o "shell" de UNIX es también un lenguage de programación completo. La programación de shell se usa mucho para realizar tareas repetidas con frecuencia.

En un shell script se pueden utilizar variables. Una variable puede contener un número, un
carácter o una cadena de caracteres. No necesita ser declarada, por defecto todas las variables
son cadenas de caracteres.

Para programar se requiere algún editor específico de unix tanto el nano como vi pueden ser útiles para empezar a programar.

Vamos a explicar el funcionamiento del editor vi.

El editor tiene dos modos de uso:

  •     Edición: Para modificar un fichero
  •     Comando: Para gestión

Para abrir el editor tan solo basta con poner vi nombrearchivo.sh , si no existe el archivo lo crea

Uso de los comando en el editor vi.

  • :q para salir
  • :q! salir y descartar cambios
  • :wq Guardar y salir
  • a para agregar texto a la derecha del cursor
  • o para agregar una línea (o a y enter)

Los archivos ejecutables en shell
  • Tienen extensión .sh
  • Se ejecutan con ./nombre.sh argumentos o con la ruta absoluta
  •  # = Se usa para  comentarios
  • En general, mismas normas que cualquier lenguaje de programación
  • Los comandos, en realidad, son programas
  • Para linux todo es un archivo

Variables y sus condiciones
  • No pueden llamarse igual que las palabras reservadas
  • Empiezan con una letra



Paso de parámetros

Los parámetros se pasan como argumentos al programa

$0, $1, $2… $0 es el nombre del programa
$# =Número total de parámetros



E/S de datos por consola

Para que el ordenador lea desde la consola - read
Para que escriba - echo



Redireccionamiento de la salida

En linux se abren 3 archivos por defecto al ejecutar un programa
  • Salida estándar: Monitor
  • Entrada estándar: Teclado
  • Error estándar: Monitor
Se pueden reasignar permanente o temporalmente


Comandos para mostrar el contenido de un fichero
  • less
  • cat
  • more
Lo normal es usarlo con filtros mediante pipes (|)

Filtros

grep = muestra las líneas que cumplan una condición
$ less /etc/passwd | grep root
head y tail  Primeras y últimas líneas
head –n 20 nombre_de_archivo
tail –n 20 nombre_de_archivo
$ less /etc/passwd | head –n 5
$ less /etc/passwd | tail –n 5
cut = obtiene campos a partir de un separador
cut –d “:” –f filas nombre_de_archivo
$ less /etc/passwd | cut –d “:” –f1
sort = ordenar una salida de datos
$ less /etc/passwd | cut –d “:” –f1 | sort
$ less /etc/passwd | cut –d “:” –f3 | sort –n = números