logo
MyWebStudies - Página de inicio
INGRESAR

REGISTRARSE
Buscador

Trabajando con cript (II)

Selecciona el idioma :

Por favor, inicia sesión para que tu progreso sea registrado. Sin iniciar sesión, podrás visualizar el video pero no se aumentará tu avance en el curso

Transcripción Trabajando con cript (II)


Scripts de Bash

Un script consiste en un archivo de texto plano con la sintaxis y comandos en un orden y lógica adecuados. Los comandos son encadenados, a través de bucles, condicionales, uso de variables, etc., para lograr la ejecución de una o varias tareas de interés.

La principal utilidad de un script es que permite la ejecución de comandos en lote, la automatización de tareas de ejecución repetitiva y el agendamiento de la ejecución de tareas.
Mediante la fácil modificación de los parámetros de ejecución, los scripts pueden reutilizarse para la ejecución de tareas similares a las originales.

Cuando los comandos se combinan de nuevas formas en un script, se convierten, conceptualmente en un nuevo comando. Los scripts pueden personalizar y ampliar los sistemas operativos. Los scripts y los comandos que los conforman, generan resultados, algunos de estos son la salida de la ejecución.

Salidas de un script

Al resultado devuelto por el software le llamamos “salida”. Los comandos y los scripts de shell tienen los siguientes tipos de salidas:

  • Estándar (STDOUT)

Resultados mostrados en pantalla cuando la ejecución del software o parte de este finaliza. Por ejemplo, al ejecutar el comando:

  • echo “Hola Bash”

El resultado mostrado en pantalla y por tanto la salida estándar, sería el texto:

  • Hola Bash
  • Error (STDERR)

Serian los mensajes de error que el software lanza durante su ejecución. Por ejemplo, al ejecutar el comando:

  • fdisk –l

si lo hacemos desde una sesión sin permisos suficientes, mostraria el error:

  • fdisk: cannot open /dev/ram0: Permission denied

Redirección de Salidas

Es posible redireccionar las salidas hacia archivos de nuestro sistema. Podemos guardar la información resultante de ejecutar un comando o un script, en el archivo que designemos. También podemos redireccionar independientemente cada salida

Redireccionando STDOUT

Para redireccionar solo la salida estándar usamos el símbolo Ej.:

  • $ echo "Hola Bash" saludo.txt
  • $ echo "Hola Bash" 1 saludo.txt

Así redireccionamos la salida del comando echo hacia el archivo saludo.txt. Podemos opcionalmente añadir el número 1 delante del símbolo para indicar que solo redireccionaremos la salida estándar.

Redireccionando STDERR

Para redireccionar solo la salida error usamos también el símbolo mayor que, pero siempre precedido del número 2: Ej.:

  • $ fdisk –l 2 errores.txt
  • fdisk: cannot open /dev/ram0: Permission denied

En este ejemplo, redireccionamos la salida error del comando echo hacia el archivo errores.txt

Redireccionando ambas salidas hacia distintos destinos

Podemos especificar también 2 destinos diferentes para las salidas del script. Ej.:

  • $ fdisk –l 1 resultados.txt 2 errores.txt
  • $ fdisk –l resultados.txt 2 errores.txt

En estos ejemplos, redireccionamos la salida estándar del comando fdisk hacia el archivo resultados.txt y la salida error hacia el archivo errores.txt.

Redireccionando ambas salidas hacia un destino común

Podemos también redireccionar ambas salidas hacia un mismo archivo, lo cual es posible de 2 formas. Redireccionando la salida estándar hacia un archivo y la salida error hacia la salida estándar. Ej.:

  • $ echo "Hola Bash" resultados.txt 2&1

En este ejemplo redireccionamos la salida estándar del comando echo hacia el archivo resultados.txt y la salida error hacia la estándar. Es por ello que hemos usado la construcción: 2&1

Redireccionando ambas salidas hacia el mismo archivo a la vez:

  • $ echo "Hola Bash" & resultados.txt

En este ejemplo redireccionamos ambas salidas hacia el mismo archivo, resultados.txt. Es por ello que hemos usado la construcción: &.

Redirección de salidas en modo adjuntar

Además, podemos redireccionar las salidas en modo adjuntar, o sea, haciendo que se añada el texto redirigido siempre al final del archivo, en vez de sobrescribir su contenido.

Adjuntando la salida estándar a un archivo:

  • $ echo "Hola Bash" resultados.txt

Para adjuntar ambas salidas al mismo archivo, usamos entonces la sintaxis que se presente en el ejemplo:

  • $ echo "Hola Bash" resultados.txt 2&1

En ambos casos se utiliza la construcción conformada por el doble signo de mayor que (), el cual indica la orden de adjuntar el texto redirigido.

Palabras Reservadas

Las palabras claves (o reservadas) son aquellas que tienen un significado especial para el shell. Estas palabras son usadas en los scripts para declarar secuencias de control, bloques condicionales, comandos simples, etc. Su uso debe restringirse a ello, no deben ser usadas como nombres de variables a pesar que el shell lo permita.

Deteniendo el script

Cuando usamos bash en modo interactivo, podemos usar el comando logout para detener la ejecución la sesión. En los scripts, debemos usar el comando exit para detener la ejecución.

El comando exit puede ir acompañado de un código de retorno. El código de retorno 0 es usado exclusivamente cuando el script finaliza correctamente. Si se omite el retornar un código de estado, el estado del último comando ejecutado es retornado.

Tenemos disponibles desde el 1 hasta el 254 para asignar a cada estado devuelto por nuestro script un único valor de retorno.

Variables

Declaración de Variables en Bash

Los resultados de las operaciones (comandos y scripts) pueden guardarse en un archivo o en variables. Debido a que las variables se guardan en la memoria, tienden a ser más rápidas de examinar que los archivos.

Bash no pone un limite superior en el tamaño de una variable.
Una variable se declara usando la palabra declare, seguida del nombre de la variable, como en el ejemplo a continuación.

Los nombres de las variables comienzan con una letra o un guion bajo, luego siguen con caracteres alfanuméricos y/o guiones. Por ejemplo: Tradicionalmente, las variables se nombran en mayúsculas para que no sean confundidas con los comandos del shell, que casi siempre están en minúsculas.

Asignación de valores a Variables en Bash

n A las variables se les puede asignar nuevos valores usando el signo = :
Ej.:

  • DIRECCION_POSTAL =

Asigna el valor de cadena de texto vacia a la variable:

  • COSTO_SERVICIOS = 0

Asigna un valor numérico (entero) 0, a la variable:

  • COSTO_INSUMOS = 14.3

Asigna un valor numérico (flotante) 14.3, a la variable:

  • MES_ACTUAL = "Septiembre"

Asigna el valor de cadena de texto con contenido a la variable:

  • PHONE_NUMBER = "UNKNOWN"

Asigna el valor UNKNOWN (cadena de texto) a la variable. Los valores de las variables también pueden ser asignados en el momento de la declaración de las mismas:

  • declare COSTO_GOMA=17.56

Asigna un valor con decimales a la variable en su declaración. Los valores de las variables deben ser referidos con el operador $ símbolo de dólar, para ser usados o examinados:

  • printf "%d" $TOTAL Imprime el valor de la variable TOTAL.

Las variables permanecen en memoria hasta que el script finaliza (generalmente), o bien hasta ser destruidas usando el comando unset, como en el ejemplo mostrado:

  • unset TOTAL Destruye la variable TOTAL.

El resultado de la ejecución de una operación con variables puede ser almacenado en otra variable. El resultado de la ejecución de un comando puede ser almacenado en variables

Más sobre las Variables en Bash

Es recomendado encerrar entre comillas dobles los valores a asignar a una variable. Esta práctica es especialmente útil cuando el valor a asignar a la variable contiene espacios en blanco. En ciertos escenarios, pueden producirse errores por no proceder de esta forma.

Es recomendado también, encerrar en dobles comillas las sustituciones de variables al referir su valor. Alternativamente, el nombre de una variable usada en una sustitución puede ser encerrado en corchetes para esclarecer donde empieza y termina la misma: Ej.:

  • TAX_MENSAJE="El impuesto es del ${TAX_CALCULADO} %"

Usando letpara declarar Variables en Bash

Los valores de las variables también pueden ser asignados usando la palabra reservada let. El comando integrado let realiza los cálculos correspondientes y el valor resultante de la operación es asignado a la variable.

El comando integrado let interpreta toda variable en el lado derecho del signo = como una referencia a su valor, por tanto, no es estrictamente necesario usar en la operación de asignación, el símbolo $. Es por ello que el presente ejemplo tiene el mismo efecto que el ejemplo anterior.

Asignando valores entrados por teclado a Variables en Bash

Puede asignarse también a una variable, un valor introducido al script por el usuario, a través de la entrada por teclado usando el comando read. El comando read detiene el script y espera a que el usuario introduzca información escrita desde el teclado. El texto introducido por teclado se asigna a la variable que acompaña al comando.

Tipos de Variables

Cadenas y Enteros

Todas las variables en Bash son almacenadas como cadenas simples. Sin embargo, cada variable tiene atributos que modifican la forma en que el shell las trata y reconoce. Los atributos son modificados haciendo uso de opciones en el comando declare.

Si una variable es declarada con la opción –i, Bash activa el atributo “entero” a dicha variable. Los atributos de una variable pueden ser mostrados con la opción -p (imprimir). Para desactivar el atributo “entero” a una variable, basta con usar la opción +i.

Arreglos

Los arreglos son un tipo de variable que consisten en listas de valores. Los arreglos son creados con el atributo –a. En Bash los arreglos pueden tener cualquier dimensión. La primera posición es la número 0 (no la 1).

Los elementos son asignados al arreglo usando corchetes para indicar la posición del elemento en la lista, pero puede abreviarse la asignación mediante el uso de paréntesis en la sintaxis. En estos ejemplos se asignan los valores especificados en las posiciones indicadas del arreglo de las 2 formas posibles.

Los valores de los elementos del arreglo son referenciados usando el nombre del arreglo entre llaves, incluyendo la posición del elemento dentro de corchetes:

  • echo "${DPTOS[0]}"

Las posiciones no asignadas en el arreglo, no tienen valores asociados, por tanto, son cadenas vacías.


script 2

¿Hay algún error o mejora?

¿Dónde está el error?

¿Cúal es el error?