introducción a shell script
TRANSCRIPT
Introducción aShell Script
Prof. Pablo Macónhttp://pablomacon.wix.com/home/
Introducción a Shell Scripting
La idea es combinar secuencias de comandos de Linux para realizar determinadas tareas.
Con shell scripts podremos definir variables y asignarles valores o permitir que un usuario inserte valores de forma interactiva.
Introducción a Shell Scripting
En este lenguaje de programación disponemos de bucles y estructuras de control para realizar operaciones aritméticas o de comparación.
También podremos tener varios shell scripts ejecutándose al mismo tiempo.
Variables
Son porciones de memoria
Asociadas a un nombre simbólico
Pueden tener un valor o contener información
Este valor puede ser cambiado en cualquier momento
Variables
En Linux, por defecto, todas las variables son cadenas de caracteres, no hay tipos como int, char, long...
Si las queremos usar en una operación aritmética vamos a tener que indicarle al sistema lo que queremos hacer con un comando especial
Variables
Declarar una variable:nombre_Variable=valor
(sin espacios a ambos lados del signo igual) var1=holavar2=mundo
Variables
Declarar una variable:También podemos asignar una cadena con varias palabras, pero para eso tenemos que ponerlas entre comillas doblesvar3=”hola mundo”
Variables
Declarar una variable:Podemos poner también las secuencias de escapevar4=”hola\nmundo”
Variables
Por último podemos poner el resultado de un comando en una variable, con las comillas invertidas:
var6=`ls /bin`
El sistema ejecuta el comando que está entre comillas y el resultado se pone íntegro dentro de la variable, sin mostrarlo en la pantallas
Comando echo
El valor que está guardado en las variables puede ser utilizado en cualquier momento, ya sea dentro de un script como fuera de él
Hay que resaltar y recordar que cualquier comando que podamos utilizar dentro de un script va a poder ser utilizado fuera, en la línea de comandos que usamos
Comando echo
Uno de los muchos usos que vamos a hacer de las variables va a ser mostrarlas en pantalla. Ya sea para dar un saludo al usuario que está utilizando el sistema, como para verificar si los datos ingresados son correctos.
Comando echo
El comando que nos va a permitir ver el contenido de las variables en la pantalla es el comando echo.
Este comando desplegará en la salida estándar cualquier elemento o cadena de caracteres que le indiquemos como parámetro
Comando echo
La sintaxis de este comando es:
echo [-opciones] [cadena con o sin formato]
echo “Mi nombre es Fulano de tal y nací el 30 de febrero de 1995”
mostrará en la salida estándar (pantalla) la cadena que está entre comillas
Comando echo
Para mostrar el contenido (valor) de cualquier variable (cualquiera haya sido el método mediante el cual la definimos), es necesario que el nombre de la variable esté precedida por el signo $ (pesos)
echo $miVariable
mostrará el valor de miVariable en la salida estándar
Comando echo
echo permite también formatear la salida, utilizando la opción -e, podemos mostrar cadenas con columnas, o dejar líneas en blanco, etc.
No olvidar nunca poner la opción -e, de lo contrario, el efecto deseado no se va a mostrar
Comando echo
Comando echo
Probemos:echo -e “hola \amundo”echo -e “hola \bmundo”echo -e “hola \cmundo”echo -e “hola \nmundo”echo -e “hola \tmundo”
Comando echo
echo permite también formatear la salida, utilizando la opción -e, podemos mostrar cadenas con columnas, o dejar líneas en blanco, etc.
No olvidar nunca poner la opción -e, de lo contrario, el efecto deseado no se va a mostrar
Comando read
De cualquier modo, aún no hemos interactuado con el usuario. Una manera para lograr que el usuario pueda participar con nuestro programa la vamos poder hacer con el comando read. Este comando permite que el valor de una variable sea tomado desde la consola, siendo ingresado por el usuario a través de la entrada estándar (teclado)
La sintaxis es:
read [-opciones] [Cadena] variable
read miVariable
Esperará a que el usuario ingrese un valor, una vez que se ingrese <intro> , aquello que haya sido ingresado se ⤶guardará en la variable de nombre miVariable
Comando read
Este comando requiere que el usuario sepa exactamente que es lo que se espera de él.
No podemos pensar que el usuario adivinará que ante una pantalla negra, tenga que ingresar un valor de un tipo determinado.
Comando read
Es por ello que normalmente vamos a mostrarle algún tipo de mensaje en la pantalla previo al uso del comando read, indicándole al usuario qué es lo que tiene que ingresar.
El par echo/read va a ser uno de los más utilizados en cualquier shell script que hagamos.
Comando read
Ejemplo: Deseamos que el usuario ingrese su nombre, apellido y edad para guardarlos en tres variables.
echo -e “Ingrese su apellido: \c”; read ape
echo -e “Ingrese su nombre: \c”; read nom
echo “Ingrese su edad: ”; read edad
Comando read
Ejemplo: Deseamos que el usuario ingrese su nombre, apellido y edad para guardarlos en tres variables.
¿qué diferencia se puede notar entre el uso de echo con la opción -e \c y la que no usan la secuencia de escape?
Comando read
Ejemplo: Deseamos que el usuario ingrese su nombre, apellido y edad para guardarlos en tres variables.
Luego, en otra parte del programa vamos a querer mostrar los valores ingresados:
echo “Ud. es $nom $ape y su edad es $edad”
Comando read
Nota aparte: Los nombres que le pongamos a las variables tienen que tener algún tipo de relación con el valor o el uso que queramos darle.
No podemos tener un script lleno de variables que se llamen var1, var2, … var26 cuando la primera guarda una cédula, la segunda una dirección y la tercera el nombre de un libro
Comando read
En esta clase vamos a utilizar el editor nano, en las siguientes vamos a utilizar el editor vi.
En la consola, escribamos nano primerScript.sh, es decir, el nombre del comando seguido del nombre de nuestro programa.
Nuestro primer script
Por convención, todos los scripts suelen terminar con la secuencia .sh aunque debemos recordar que en Linux la extensión de un archivo no tiene un valor más allá de permitir reconocer su tipo.
Nuestro primer script
La primera línea de todos nuestros scripts será la siguiente:
#! /bin/bash
Esta línea le permitirá al shell reconocer que nuestros scripts deben correrse utilizando la shell bash. Si bien puede usarse alguna otra shell, solo con bash vamos a estar 100% seguros de que funcionará como queremos.
Nuestro primer script
A partir de esa línea, las siguientes líneas serán las que escribimos hoy más temprano:
echo -e “Ingrese su apellido: \c”; read apeecho -e “Ingrese su nombre: \c”; read nomecho -e “Ingrese su edad: \c”; read edadecho “Ud. es $nom $ape y su edad es $edad”
Nuestro primer script
Una vez que finalizamos de editar nuestro script, debemos guardar los cambios con la combinación de teclas <ctrl>+<o>, le ponemos el nombre deseado (el que ya tenía).
Para salir del editor usamos la combinación <ctrl>+<x>
Nuestro primer script
Para ejecutar nuestros scripts vamos a utilizar el comando ./
./primerScript.sh
Permiso denegado ¿por qué obtenemos esta respuesta?
Nuestro primer script
Porque los programas deben tener permiso de ejecución. De otro modo, son archivos comunes que no tienen permiso para ejecutarse.
Para darle permiso debemos utilizar el comando chmod.
Para simplificar usaremos
chmod 777 primerScript.sh
Nuestro primer script
Ahora sí, podemos ejecutar el script que escribimos con el comando
./primerScript.sh
Nuestro primer script