Saltar al contenido principal
Página

Tema 2.2 - Scripts Shell

Normalmente los shells son interactivos. Esto significa que el shell aceptará comandos ingresados por usted (a través del teclado) y los ejecutará. Sin embargo, si almacena una secuencia de comandos en un archivo de texto y le dice al shell que ejecute el archivo de texto en lugar de ingresar los comandos, eso se conoce como un programa de shell o script de shell.

Un script de Shell se puede definir como: " una serie de comandos almacenados en un archivo de texto sin formato”. Un script de shell es similar a un archivo por lotes en MS-DOS, pero es mucho más poderoso en comparación con un archivo por lotes.

Los scripts de shell son una parte fundamental del entorno de programación de UNIX y Linux.

Ventajas

  • Fácil de usar.
  • Inicio rápido y depuración interactiva.
  • Ahorran tiempo.
  • Los scripts de Shell pueden ejecutarse sin ningún esfuerzo adicional en casi cualquier sistema operativo UNIX / Linux / BSD / Mac OS X moderno, ya que están escritos en un lenguaje interpretado.


Desventajas

  • Problemas de compatibilidad entre diferentes plataformas.
  • Velocidad de ejecución lenta.
  • Se lanzó un nuevo proceso para casi todos los comandos de shell ejecutados


Estructura básica de un Shell-script

En su forma más básica, un shell-script puede ser un simple fichero de texto que contenga uno o varios comandos. Para ayudar a la identificación del contenido a partir del nombre del archivo, es habitual que los shell scripts tengan la extensión ".sh", por lo que seguiremos este criterio (pero recuerde que es algo meramente informativo y opcional).

Además de comandos, los shell-scripts pueden contener otros elementos, aportados por el shell para mejorar la funcionalidad de los scripts. De forma resumida, la estructura básica de un shell-script es la siguiente:



Como contenido del script pueden utilizarse múltiples elementos (comandos, variables, funciones, estructuras de control, comentarios...).

El "shebang" permite especificar el intérprete de comandos con el que deseamos que sea interpretado el resto del script cuando se usa invocación implícita. La sintaxis de esta línea es la secuencia #! seguida del ejecutable del shell deseado, sobre lo que deben realizarse las siguientes advertencias:

  • Es imprescindible que sea la primera línea del script, ya que, en caso contrario, sería interpretado como un comentario (comienza con el carácter #).
  • Puede haber espacios entre #! y el ejecutable del "shell".
  • El shebang no es obligatorio (cuando se usa invocación implícita, si no se indica se intentará usar el mismo tipo de shell desde el que se ha invocado el script).

La utilización del shebang está condicionada por la forma en que sea invocado el shell-script, existiendo 3 opciones:

  1. Explícita: escribiendo explícitamente qué shell se desea invocar y pasando como argumento el nombre del script, cargándose en memoria un nuevo proceso para dicho shell  (subshell o proceso shell hijo del shell padre responsable de la línea de comandos desde la que se ha invocado el script). En este caso se ignora el shebang.
  2. Implícita: invocando al script como si fuera un ejecutable, lo que requiere asignar permisos de ejecución al script. Se lee el shebang para determinar qué shell deberá usarse para leer el script, cargándose en memoria un proceso hijo (subshell) para dicho shell (si el script no presenta shebang, para el subshell se utilizará el mismo tipo de shell que el encargado de la línea de comandos desde la que se ha hecho la invocación). Tenga en cuenta que los shell-scripts son ficheros de texto leídos por el intérprete de comandos, esto es, se interpretan, NO se ejecutan. La asignación del permiso de ejecución a un shell-script es una utilidad del sistema de ficheros para acelerar la invocación de scripts, pero cuyo funcionamiento interno es cargar un nuevo proceso de shell (subshell) para que éste interprete el script.
  3. Implícita con . (equivale a importar): el script será interpretado por el mismo proceso del shell responsable de la línea de comandos desde la que se está invocando el script (luego aquí no se abre ningún subshell). Consecuentemente, en este caso también se ignora el shebang.



Mi primer script shell "Hola Mundo"


Lo primero será crear nuestro archivo de texto con extensión .sh, puede utilizar el editor de su conveniencia como el editor vi u otro

1. Nos dirigimos a la ruta donde crearemos el archivo en este caso en el escritorio e ingresamos el comando nano (nombre_del_archivo.sh) seguidamente damos enter




2. Agregamos la primea línea con el shebang en nuestro caso utilizaremos el shebang que trae Linux que es el bash




3. Agregamos el código, en nuestro caso mostraremos un mensaje con un “HOLA MUNDO QVISION” y otro mensaje adicional




4. Damos CNTRL + O en nuestro teclado y seguidamente damos ENTER, nos guardara el archivo que acabamos de escribir




5.  Damos CNTRL + X Para salir del editor y visualizaremos el archivo y sus propiedades mediante el comando ls –l




6. En este momento el archivo que acabamos de crear no tiene permisos de ejecución, ahora asignaremos estos permisos mediante el comando sudo chmod u+x (Nombre_archivo), damos ENTER y el shell nos pedirá que ingresemos la contraseña del usuario Linux




7. Ahora ejecutaremos el archivo de la siguiente manera:  ./(Nombre_archivo)

./holamundo.sh




También lo podemos ejecutar de la siguiente manera: bash (Nombre_Archivo)

bash holamundo.sh



Última modificación: lunes, 11 de mayo de 2020, 22:12