













Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
En este manual se trabajan los siguientes contenidos: cómo escribir y ejecutar un script, uso de variables, comillas, comodines, comandos echo y read, operaciones aritméticas, redireccionamientos, tuberias, estado de salida de un comando, comando test, estructuras de control y funciones.
Tipo: Apuntes
1 / 21
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!














Los pasos necesarios para escribir y ejecutar un shell script son: (1) Usar cualquier editor como vi o gedit para escribir el script. Sintaxis: gedit nombre-script (2) Después de escribir el script, hay que darle permisos de ejecución de la siguiente manera: Sintaxis: chmod permiso nombre-script Ejemplos: $ chmod +x nombre-script $ chmod 755 nombre-script Nota: Esto establecerá el permiso de lectura, escritura y ejecución (7) para el propietario, y para el grupo y el resto de usuarios solo permisos de lectura y ejecución (5). (3) Ejecuta el script de la siguiente forma: Sintaxis: ./nombre-script Ejemplos: $ ./miscript.sh Consejo: Los archivos de shell script guárdalos con la extensión .sh, de manera que facilite la identificación de este tipo de archivos.
Ya estamos listo para escribir nuestro primer shell script (holamundo.sh) que imprimirá en pantalla el mensaje “Hola mundo!”. Ejecuta el siguiente comando para abrir el editor de texto: $ gedit holamundo.sh Escribe el siguiente shell script: #!/bin/bash
clear echo "Hola mundo!" Explicación del código del script línea a línea: Comando Significado #!/bin/bash El sha-bang (#!) al comienzo de un script indica al sistema que el archivo va a ser interpretado por un determinado intérprete. En este caso por /bin/bash. Todos los scripts deben empezar por esta línea. Hay otros intérpretes como /bin/sh, /bin/ksh pero nosotros utilizaremos /bin/bash para nuestros scripts.
comentario y no será interpretado. Los comentarios sirven para proporcionar más información sobre el script, explicar partes del código, etc. clear Limpia la pantalla echo "Hola mundo!" Imprime el mensaje “Hola mundo” en pantalla. Para imprimir un texto en pantalla se utiliza el comando echo. Después guarda el script y dale permisos de ejecución $ chmod 755 holamundo.sh Finalmente ejecuta el script: $ ./holamundo.sh
Variable Significado $0 el nombre del script. $1…$9 Corresponde a los primeros 9 parámetros con los que se llamó el script. $# Número de parámetros con los que se ha invocado el script. Es muy útil para comprobar el número de argumentos pasados en la ejecución de un Shell script. $* Los parámetros pasados al script. $@ Los parámetros pasados al script. $$ El PID de la shell. $? Estado de salida del último comando o script ejecutado.
Para definir variables y asignar sus valores se utiliza la siguiente sintaxis: nombre_variable= 3 Para imprimir o acceder al valor de una variable, basta con colocar el símbolo del dólar ($) por delante del nombre de la variable echo $nombre_variable
A. El nombre de la variable debe comenzar con un carácter alfanumérico o un carácter de subrayado (_), seguido de uno o más caracteres alfanuméricos. Ejemplos: nombre, miVar, etc. B. No poner espacios a ambos lados del signo igual (=) cuando asigne un valor a la variable. Las siguientes asignaciones son erróneas: var = var= 10 var = 10 C. Las variables distinguen entre mayúsculas y minúsculas. Las siguientes variables son diferentes: var= Var=1 1 vAr=
Hay tres tipos de comillas Comillas Nombre Significado " Comillas dobles Dentro de las comillas dobles todos los caracteres son interpretados literalmente. Excepto algunos de ellos que si son interpretados ( $, , ). ' Comillas simples Dentro de las comillas simples todos los caracteres son interpretados literalmente. Es decir, ninguno de los caracteres especiales conserva su significado dentro de las comillas simples. Comilla invertida Se utilizan para ejecutar comandos. Es decir, ejecuta el comando y sustituye la cadena por su salida. Ejemplo: echo date
Hay una serie de caracteres que se pueden utilizar como comodines y que pueden sustituir a otros caracteres o conjuntos de caracteres. Comodín Significado Ejemplos *** Coincide con cualquier cadena o grupo de caracteres. ls * Muestra todos los archivos ls a Muestra todos los archivos cuya primera letra empiece por 'a' ls .c Muestra todos los archivos que tengan la extensión .c ls ut.c Muestra todos los archivos que tengan la extensión .c y cuyo nombre empiece por las letras 'ut'. ? Coincide con cualquier carácter individual. ls? Muestra todos los archivos cuyo nombre consta de un solo carácter. ls fo? Muestra todos los archivos cuyo nombre tienen tres caracteres y comienzan por 'fo' [...] Coincide con cualquiera de los caracteres entre corchetes ls [abc] Muestra todos los archivos cuyo nombre empiece por las letras a, b y c.
El comando echo imprime en pantalla el texto que se le pasa. Sintaxis: echo [opciones] cadenas Ejemplo: $ echo “Hola ¿Qué tal?” Hola ¿Qué tal? Opciones
Se usa para leer datos del usuario desde teclado y almacenarlos en variable. Sintaxis: read variable Ejemplo: El siguiente script primero pregunta al usuario el nombre y queda a la espera de que lo introduzca por teclado. Cuando el usuario introduce el nombre por teclado y pulsa la tecla intro, se almacena en la variable varnombre. #Ejemploread.sh #Script para leer tu nombre desde teclado
echo – n "Introduzca su nombre: " read varnombre echo "¡Hola $varnombre!" Al ejecutarlo: $ ./Ejemploread.sh Introduzca su nombre: Javier ¡Hola Javier! NOTA: Se puede utilizar el comando read con la opción – p para indicar en la misma línea el texto que se mostrará por pantalla. Ejemplo: read – p “Introduzca su nombre: ” varnombre #Es equivalente a:
También podemos realizar operaciones aritméticas sin utilizar el comando expr. Para ello tenemos que definir variables numéricas utilizando el comando let. Ejemplo: #!/bin/bash let A= let B= let C=$A+$B echo "C= $C"
La mayoría de los comandos proporcionan la salida por pantalla o toman la entrada desde el teclado, pero es posible enviar la salida a un archivo o leer la entrada de un archivo. Es decir, el shell puede redirigir la entrada estándar (stdin), la salida estándar (stdout) y el error estándar (stderr) desde y hacia archivos. Símbolo redirección Sintaxis Significado < comando < archivo comando obtiene la entrada de archivo y no de teclado > comando > archivo Redirige la salida estándar a archivo. (Si archivo existe se sobrescribe y si no se crea) >> comando >> archivo Redirige la salida estándar a archivo. (Si archivo existe se añaden los datos al final del archivo.) 2> comando 2> archivo Redirige el error estándar a archivo &> comando &> archivo Redirige tanto la salida estándar como el error estándar a archivo Ejemplos: Redirecciona la salida del comando ls y la vuelca en archivo.txt $ ls > archivo.txt Sin embargo, cada vez que ejecutemos ese comando el contenido de archivo.txt será reemplazado por la salida del comando ls. Si queremos agregar la salida del comando al final del archivo, en lugar de reemplazarla, entonces ejecutamos: $ date >> archivo.txt
Una tubería (pipe) permite redirigir la salida estándar de un comando para que se convierta en la entrada estándar de otro comando por medio del operador | Sintaxis: comando1 | comando 2 Ejemplos: Comandos con tuberías Significado de la tubería $ ls | more La salida del comando ls se envía como entrada al comando more, que la muestra de forma paginada. $ who | sort Envía la salida del comando who al comando sort e imprime una lista de usuarios conectados ordenada alfabéticamente. $ ls - l | wc - l La salida del comando ls se proporciona como entrada al comando wc para que imprima la cantidad de archivos en el directorio actual.
Cuando se ejecuta un comando o un shell script, este devuelve un valor que se usa para determinar si se ha ejecutado correctamente o no.
Combinar y negar expresiones t1 – a t2 (^) Las expresiones t1 y t2 son true t1 – o t2 (^) O expresión t1 o expresión t2 son true !t1 Cierto si la expresión t1 es false El comando test tiene un alias, [] (corchetes) como abreviatura para usarlo con condicionales y bucles. Las siguientes dos expresiones son equivalentes: $ test 10 – lt 5 $ [ 10 – lt 5 ]
La instrucción if elige entre alternativas. La forma más sencilla es la instrucción if-then: if comando #Si el estado de salida de comando es 0 then cuerpo fi Ejemplo: #!/bin/bash if [ whoami = root ] then echo “Tú eres el superusuario” fi Si queremos distinguir entre dos alternativas, se utiliza la instrucción if-then-else: if comando #Si el estado de salida de comando es 0 then cuerpo else cuerpo fi Ejemplo: #!/bin/bash if [ whoami = root ] then echo “Tú eres el superusuario” else echo “NO eres el superusuario” fi
Por último, la contrucción if-then-elif-else, puede considerar todas las alternativas que se desee: if comando then cuerpo elif comando then cuerpo elif ... then ... else cuerpoN fi
El bucle while repite una serie de comandos mientras una condición sea cierta. while comando #Mientras el estado de salida de comando sea 0 do cuerpo done Ejemplo: #!/bin/bash i= while [ $i – lt 3 ] do echo “$i” i=expr $i +1 done Al ejecutarlo obtenemos: $ ./while1.sh 0 1 2
El bucle for tiene también otra sintaxis posible mucho más parecida a la de los lenguajes de programación convencionales (Java,C,C++,etc.) for (( inicialización; condición; incremento )) do cuerpo done Ejemplo: Imprime los números del 1 al 10 #!/bin/bash for (( i=1; i<=10; i++ )) do echo “$i” done En la mayoría de los casos utilizaremos la primera sintaxis (la de iterar por los valores de una lista), aunque en ciertas ocasiones puede ser útil utilizar esta segunda sintaxis del bucle for.
La instrucción case es una buena alternativa a la instrucción if-else multinivel. Permite evaluar los diferentes valores que puede tomar una cadena y realizar diferentes acciones en cada caso. case cadena in expr1 ) cuerpo1 ;; expr2 ) cuerpo2 ;; ····· exprN) cuerpoN ;; *) cuerpoPorDefecto ;; esac donde cadena se compara con los diferentes patrones (expr1, expr2, …) hasta que se encuentra una coincidencia. El shell luego ejecuta todas las sentencias hasta los dos puntos y coma. El valor predeterminado es *) y se ejecuta si no se encuentra ninguna coincidencia. Ejemplo: #!/bin/bash read – p “Introduzca un carácter alfanumérico: ” caracter case $caracter in [A-Z]) echo “$caracter es una letra mayúscula” ;; [a-z]) echo “$caracter es una letra mayúscula” ;; [0-9]) echo “$caracter es un dígito” ;; *) echo “carácter no identificado” ;; esac