You are on page 1of 23

Scripts bajo la shell de Linux

Lina Mckoll Hernández

Qué es un script?
Un script es archivo ejecutable con una serie de ordenes que serán ejecutadas secuencialmente por un programa intérprete, que en este caso será la shell o interprete de comandos entre el usuario y el S.O

presentándoselos al usuario como de una forma sencilla y de rápido acceso .Cuál es el objetivo de in script? Un script permite reunir una serie de comandos (utilidades) que podrían llegar a ser complicados incluyendo muchas opciones o parámetros y argumentos.

sh syntax: $ bash your-script-name $ sh your-script-name $./your-script-name . como vi u otro. Cómo ejecutar un script? Es necesario darle permisos de ejecución: $ chmod +x your-script-name $ chmod 755 your-script-name $ chmod ugo+x ejemplo.Dónde crear un script? Puede crearse en cualquier editor de texto plano.

etc) Case sensitive. . Hay variables definidas por el programador y otras que.*. Para retornar su valor necesitamos anteponer el signo $. por ser de uso muy común.Variables Una variable es una asignación en memoria donde podemos guardar y reescribir cualquier tipo de dato. ya están definidas en el sistema. No usar caracteres especiales(¿.

Escribiendo un script Las variables se definen así: Syntax: variable name=value #!/bin/sh # Ejemplo de uso de variables. VAR_1=Lina VAR_2=3 echo “Mi nombre es $VAR_1 y tengo $VAR_2 años" .

USER. UID #!/bin/sh # Ejemplo de uso de variables. clear echo “Hola $USER . PWD. tu UID es $UID“ echo “El calendario de este mes es” cal exit 0 .Escribiendo un script No es necesario declarar las variables del sitema. también llamadas variables de entorno. Algunas de ellas son: BASH.

depende del contexto puede ejecutar comandos #!/bin/sh # Ejemplo de uso de comillas Clear Yo=Lina Mckoll Hernández echo “Feliz dia a todos.Uso de comillas Comillas dobles: se usan para cadena de texto Comilla inclinada: permiten ejecutar el contenido y que su resultado sea devuelto.date Fecha=‘date’ Echo “Hoy es” $Fecha Echo “El contenido de esta carpeta es ´ls ´” . les desea $Yo“ echo “Hoy es ". Comilla simple: permite ingnorar lo que esté dentro.

current date & time # echo “Ingrese por favor un numero” read num echo “Usted es $USER y ha ingresado el número $num” .Pidiendo datos al usuario En ocasiones es muy importante guardar ciertos parámetros dados por el usuario. en el siguiente script vemos cómo hacerlo: #!/bin/sh # Script to print user information: # who currently login .

Aritmetica Utilizar el comado expr #!/bin/sh # Ejemplo de uso de variables. expr 1 + 3 #suma expr 2 – 1 # resta expr 10 / 2 #division expr 20 % 3 #residuo expr 10 \* 3 #multiplicacion .

Aritmética con variables Utilizar el comado expr #!/bin/sh # Ejemplo de uso de variables. tomando uno de los #valores desde uma variables y guarda el resultado en VAR . echo “expr 6 + 3” # muestra cadena de texto echo `expr 6 + 3` # ejecuta la operación VAR= `expr 6 + 3` # ejecuta la operación y guarda el resultado #en VAR VAR= `expr $NUM1 + 3` # ejecuta la operación.

dependiendo de una condición. Ejercicios: Scripts básicos para bash If [ condición es verdadera ] then hacer instrucciones else hacer otras instrucciones fi .Expresiones condicionales Sentencia condicional if se utiliza para ejecutar unas u otras instrucciones.

Expresiones condicionales .IF Ejercicios: Scripts básicos para bash #!/bin/sh # Script con condicional if # echo “Ingrese un numero” read num echo “Usted es $USER y ha ingresado el número $num” If [ $num –eq 10 ] then echo “usted ingreso el numero 10” echo “usted tiene permiso para continuar” else echo “usted ingreso un numero diferente de 10” echo “usted no tiene permiso para continuar” fi .

Expresiones para los condicionales Comparaciones aritméticas -lt < #!/bin/bash # declare integers NUM1=2 NUM2=2 if [ $NUM1 -eq $NUM2 ] then echo "Both Values are equal" else echo "Values are NOT equal" fi -gt -le -ge -eq > <= >= == -ne != .

Expresiones para los condicionales Comparaciones de cadenas = equal != < > -n s1 not equal less then greater then string s1 is not empty -z s1 string s1 is empty #!/bin/bash #Declare string S1 S1="Bash" #Declare string S2 S2="Scripting" if [ $S1 = $S2 ] then echo "Both Strings are equal" else echo "Strings are NOT equal" fi .

-d Check for directory existence directoryname -e filename -f filename Check for file existence Check for regular file existence not a directory Check if file exists and is owned by effective group ID.Expresiones para los condicionales Comparaciones de archivos Ver algunos en español en http://doc.org/Script -b filename -c filename Block special file Special character file -L filename -O filename Symbolic link True if file exists and is owned by the effective user id.ubuntu-es. -r filename -S filename -s filename Check if file is a readable Check if file is socket Check if file is nonzero size -G filename -u filename Check if file set-ser-id bit is set -g filename -k filename true if file exists and is set-group-id. -w filename Sticky bit -x filename Check if file is writable Check if file is executable .

Expresiones para los condicionales Comparaciones de archivos Tabla resumen -e -d Verifica si el archivo existe Verifica si el directorio existe #!/bin/bash if [ -e /carpeta/archivo ] then echo "File exists" else echo "File does not exists" fi .

for variables in {inicio fin incremento} do instruccion1 instruccion2 done .Sentencia for Este bucle sirve para repetir un determinado numero de veces una o varias instrucciones.

..5.1} do echo “hola.Ejemplo de sentencia for #!/bin/sh # Script con bucle for para mostrar 5 veces un mensaje # for i in {1. esta es la vez $i“ done .

Ayuda: Puede emplear la opción -R de ls para listar subdirectorios. 3. Comprúebelo y después empleela para cambiarse a su directorio. que al ejecutarse busque entre sus directorios. 2. . Después cambie esta variable y explique que ocurre con el comodín '~'. La variable de ambiente HOME contiene el nombre de su directorio personal. y la opción -u de sort. ¿Qué hace el comando echo `ls` ? (note que se usan apóstrofes invertidos). Cree un script que sea interpretado por bash.Ejercicios propuestos 1. ordene los nombres alfabéticamente y le cree un archivo de texto con esta información. todos los archivos.

Escriba un sccript que cree sin intervención del ejecutante 50 usuarios: user1. añadir a tal variable la ruta /opt/bin y debe crear un alías que cuando se ejecute muestre el contenido de la variable PATH (no olvide cambiar el modo del archivo script2 generado para que sea ejecutable). con un archivo dentro llamado listado. user2. user3…. Cree un script que al ser ejecutado. 5.4. A cada uno le debe crear una carpeta llamada tareas.user50. Cree también un script que elimine todo lo creado por el anterior script. El archivo script2 creado debe poner la variable PATH en el valor que tenga cuando el primer script sea ejecutado. cree un archivo script2. . Ejercicios propuestos 6. compruébela empleando un intérprete de comandos. Qué hace la secuencia: N=6 echo "'1+$N' = $((1+$N))" Después de dar su respuesta.

Cree un script que muestre un mensaje cada hora en todas las terminales o consolas que se tengan abiertas en el equipo. Haga un script que después de ejecutarse pida al usuario 2 números y después presente la suma. 8.*.Ejercicios propuestos 6. . está siendo observado». 7..%). El mensaje debe decir : «Absténgase de hacer mal uso de los recursos. la resta. Haga un script empleando condicional(s) if. el producto y la división. para que se le pregunte a un usuario dos números para operarlos y que se le permita elegir que tipo de operación quiere realizar (+.

net/guias/AA_Linux_colegio/scriptsbasicos-para-bash.html http://www.Fuentes Fuentes disponibles a Octubre de 2012 http://aurea.org/Bash_scripting_Tutorial http://structio.es/wp-content/uploads/scriptsenlinux.freeos.pdf http://linuxconfig.html http://www.biz/faq/bash-for-loop/ .com/guides/lsst/ch02sec02.sourceforge.cyberciti.