Scripts Linux 2020
Scripts Linux 2020
Scripts Linux 2020
Scripts en UNIX/LINUX
Scripts
El script es un documento que contiene instrucciones, escritas en códigos de programación. El script
es un lenguaje de programación que ejecuta diversas funciones en el interior de un programa de
computador.
Algunos lenguajes de programación, usada como script son: ActionScript, JavaScript, Lua, PHP,
Python, ShellScript, Ruby, VBScript.
El Shell, además de utilizarse para ejecutar comandos, tiene una gran aplicación como lenguaje de
programación para escribir comandos o programas propios; para esto se colocan comandos en el
archivo creado (conocido como shell script) y después se ejecuta el archivo como un comando o
programa.
EL Bourne shell (sh) está disponible en todos los sistemas UNIX. Los scripts del Bourne shell también
pueden trabajar bajo el Bourne Again Shell (bash). Los shells C y TC usan un lenguaje de
programación similar al lenguaje C.
Los scripts se utilizan para automatizar o realizar tareas sin tener que repetirlas una y otra vez, ya
que en el propio fichero del script se introducen los comandos necesarios para realizar la tarea.
Para crear un shell script simple, se deben poner líneas de comando en un archivo; para escribirlo
se utiliza los comandos o instrucciones vi o nano o cualquier editor de texto y se crea el archivo, se
asignan los permisos de acceso apropiados, es decir otrogarle el permiso de ejecución y después
ejecutar el archivo (simplemente llamarlo como un comando).
Con el archivo creado y abierto, se le debe indicar a Linux que dicho archivo será un script. Por lo
tanto, todos los shell script, obligatoriamente deben tener una primera línea que es:
#! /bin/bash
La línea anterior se puede dividir en dos partes, la primera corresponde a #!, esta secuencia es
denominada SheBang. Básicamente, su función es indicar al sistema que a continuación se
presentará un conjunto de instrucciones y de este modo sean procesadas. La segunda parte,
/bin/bash, indica el shell que será utilizado para la ejecución de los comandos.
Para este caso se utiliza el comando read que realiza la lectura de la variable nombre. $nombre en
la línea de echo indica que se pasa como parámetro el contenido de la variable por lo que va a para
por pantalla el nombre guardado en la respectiva variable. \n solicita un retorno de carro y \c
solicita que siga en la misma línea.
Variables.
Como cualquier lenguaje de programación, es necesario utilizar variables que servirán para guardar
los datos en la memoria del dispositivo y se puedan utilizar dentro del desarrollo de los programas.
Para asignar el valor a una variable se debe utilizar el signo igual (=).
Para recuperar el valor de dicha variable sólo hay que anteponer el símbolo de dolar $ antes del
nombre de la variable:
Acumulador='Hola mundo'
echo $Acumulador ➔ 'Hola mundo'
Acumulador=5.5
echo $Acumulador ➔ 5.5
Las variables pueden nombrarse de múltiples formas, sin embargo, existen algunas restricciones:
• Sólo puede contener caracteres alfanuméricos y guiones bajos
• El primer carácter debe ser una letra del alfabeto o “_” (este último caso se suele reservar
para casos especiales).
• No pueden contener espacios.
• Las mayúsculas y las minúsculas importan, “a” es distinto de “A”.
• Algunos nombres so usado como variables de entorno y no los debemos utilizar para evitar
sobrescribirlas (PATH, HOSTNAME).
Es importante, para evitar inconvenientes con las variables de entorno del sistema LINUX, que los
nombres deben ser escritos en minúscula; aunque no es una regla, se debe realizar por
conveniencia. Adicionalmente, es significativo crear las variables que se ajusten al contexto de la
solución del problema.
Instrucciones condicionales.
Cada comando Linux retorna un valor de salida el cual puede ser consultado. Este valor está
guardado en la variable de solo lectura $?. El valor 0 es bueno, cualquier otro es malo.
comandos
else
comandos
fi
then, else, y fi son palabras reservadas y como tales únicamente serán reconocidas después de una
nueva línea o ; (punto y coma). Hay que asegurarse que cada if termina con su fi correspondiente.
El if se puede anidar :
if ...
then ...
else if ... (también se puede usar elif en lugar de else if)
...
fi
fi
Ejemplo de if :
if w | grep -s TTY >/dev/null
then
echo usuario está conectado
else
echo usuario no está conectado
fi
La ejecución de w se pasa a grep para buscar la terminal "TTY", la opción -s consigue que grep trabaje
silenciosamente y cualquier mensaje de error se direcciona al archivo /dev/null.
El operador && se usa para ejecutar un comando, y si es correcto, ejecuta el siguiente comando en
la lista. Por ejemplo,en comando1 && comando2, se ejecuta primero comando1 y si es correcto se
ejecuta comando2. Esto es equivalente a :
if comando1
then
comando2
fi
El operador || se usa para ejecutar un comando, y si falla, ejecuta el siguiente comando de la lista.
Por ejemplo, en comando1 || comando2, se ejecuta primero comando1 y si falla se ejecuta
comando2. Esto es equivalente a :
comando1
if test $? -en 0
then
comando2
fi
Instrucciones de control
La instrucción case
El flujo del programa se controla basado en una variable categorizada. Esta variable se compara con
cada opción. Cuando encuentra la opción correcta, se ejecuta el comando u operaciones asociadas
y se termina la instrucción.
case variable in
opcion1) comandos
;;
opcion2|opcion3) comandos
;;
opcionN) comandos
;;
Esac
Un comando puede asociarse con más de una opción. Las opciones pueden separarse unos de otros
con el símbolo | . El orden de chequeo es el orden en que aparecen las opciones.
La instrucción for
Comandos es una secuencia de uno o más instrucciones separadas por una línea o por un ; (punto y
coma).
Las palabras reservadas do y done deben estar precedidas por una línea o por un ; .
for variable in lista; do comandos; done
while lista-de-instrucciones1
do
lista-de-instrucciones2
done
until lista-de-comandos1
do
lista-de-comandos2
done
Su función es idéntica a while excepto en que el bucle se ejecuta mientras en status de lista-de-
instrucciones1 no es 0.
Ejemplos :
#!/bin/sh
echo -n "Escribe el nombre de un archivo"
read FILE
until test -f $FILE
do
sleep 60
done
echo "$FILE ya existe"
La instrucción break termina la ejecución del bucle más interior causando la ejecución de la
instrucción done más cercana.
Para salir del nivel n, usa : break n, esto causa la ejecución de la instrucción done n.
El comando continue causa la ejecución de la instrucción while, until o for en la cual comienza el
bucle que contiene el comando continue.
Ejemplo :
#!/bin/sh
while echo "Por favor introduce un comando"
read respuesta
do
case "$respuesta" in 'fin')
break # no más comandos
;;
"")
continue # comando nulo
;;
*)
eval $respuesta # ejecuta el comando
;;
esac
done
Mientras el usuario introduzca un comando o un string nulo el script continua funcionando. Para
pararlo el usuario debe teclear "fin".
Creación de un Script.
Para crear un ecript, se debe utilizar cualquier editor de texto de Linux (vi, nano, gedit), como
sugerencia utilizar el editor nano, que es más simple en su utilización.
▪ Crear un fichero o archivo de texto en la ruta donde se desea tener el script; esto es,
regularmente se ubica en el directorio personal; sin embargo se puede escoger una
ubicación distinta, simplemente hay que verificar los permisos.
▪ Guardar el archivo o fichero con el nombre escogido y se finaliza con la extensión “.sh”
▪ Para que se reconozca como un script, se debe escribir como primera línea:
#!/bin/bash.
luego se utiliza el comando ls con la opción -l para verificar los permisos que posee el script. Use el
comando ls para ver los permisos que posee el script:
$ ls -l nombre-del-script
Para ejecutar el script, se puede utilizar cualquiera de esta formas, siempre y cuando estén
soportadas por la versión del sistema operativo: