# Ejemplos Shell script ## 1. Hola mundo ````bash #!/bin/bash echo "Hola Mundo" ```` **Salida:** ![hola_mundo](images/ejemplosSH/uno.png) ## 2. Variables ````bash #!/bin/bash Numero=5 # Asignación de un valor echo "el valor de la variable es " $Numero # Lectura del valor ```` **Salida** ![variables](images/ejemplosSH/dos.png) **Si queremos que el usuario introduzca un valor**: ````bash #!/bin/bash echo -n "Introduce el valor de la variable: " # El parámetro -n evita el salto de línea read numero echo "el valor introducido es: "$numero ```` **Salida** ![variables](images/ejemplosSH/tres.png) ## 3. Paso de parametros ````bash #!/bin/bash echo "El nombre del programa es "$0 echo "El primer parámetro recibido es" $1 echo "El segundo parámetro recibido es" $2 echo "Hemos introducido: " $# "parámetros" ```` **Salida** ![variables](images/ejemplosSH/cuatro.png) ## 4. Expansiones ### 4.1 Expansion de comando ````bash # Ejecuta la orden pwd y escribe por pantalla su resultado echo $(pwd) # Almacena la ruta actual en la variable RUTA RUTA=$(pwd) echo "Estás en: $RUTA" ```` **Salida** ![variables](images/ejemplosSH/cinco.png) ### 4.2 Expansion aritmetica ````bash NUMERO=4 # Suma 3 al valor de NUMERO y lo muestra echo $(($NUMERO+3)) # Muestra 7 # También se puede usar el comando 'let' let SUMA=$NUMERO+3 echo $SUMA # Muestra 7 ```` **Salida** ![variables](images/ejemplosSH/seis.png) ## 6. Operaciones (expr y test) ````bash #!/bin/bash echo -n "introduce un valor: " read var1 echo -n "introduce un valor: " read var2 # Multiplica var1 por var2 resultado=$(expr $var1 \* $var2) echo " el resultado de la multiplicación es "$resultado ```` **Salida** ![variables](images/ejemplosSH/siete.png) ## 7. Estructuras de control ### 7.1 If **Comparacion numerica (mayor que)**: ````bash #!/bin/bash NUMERO=7 if [ $NUMERO -gt 5 ]; then echo "Numero es mayor que 5" fi ```` **Salida** ![variables](images/ejemplosSH/ocho.png) **Comparacion de cadenas (if-else-elif)**````=````: ````bash #!/bin/bash NUMERO_HIJOS=3 if [ $NUMERO_HIJOS -eq 1 ]; then echo "Tienes un unico hijo" elif [ $NUMERO_HIJOS -eq 2 ]; then echo "Tienes dos hijos" elif [ $NUMERO_HIJOS -ge 3 ]; then echo "3 o más hijos, eso es familia numerosa" else echo "No tienes ningún hijo" fi ```` **Salida** ![variables](images/ejemplosSH/nueve.png) ### 7.2 Case ````bash #!/bin/bash read -n 5 -p "Introduzca el codigo postal: " CP echo case $CP in 110*) # Patrón: empieza con 110 echo "Cadiz capital" ;; 112*) # Patrón: empieza con 112 echo "Algeciras";; [1110-1111]*) # Patrón: empieza con 1110 o 1111 echo "San Fernando";; *) # Patrón por defecto echo "Ese codigo no esta contemplado" ;; esac ```` **Salida** ![variables](images/ejemplosSH/diez.png) ### 7.3 for (para) **Sintaxis numerica**: ````bash #!/bin/bash # Se ejecuta desde i=0 hasta i=5 for ((i=0; i<=5; i++)) do echo "$i" done # Salida: 0, 1, 2, 3, 4, 5 ```` **Salida** ![variables](images/ejemplosSH/once.png) **Sintaxis de lista**: ````bash #!/bin/bash # La variable DIA toma cada valor de la lista for DIA in lunes martes miercoles jueves viernes; do echo "dia de la semana: $DIA" done ```` **Salida** ![variables](images/ejemplosSH/doce.png) ### 7.4 while (mientras) ```bash #!/bin/bash # Pide un número y lo dobla. Continúa mientras no se introduzca 0 read -p "Dime un número (0 para salir): " NUMERO # -ne significa "no es igual" while [ $NUMERO -ne 0 ]; do echo "El doble de $NUMERO es:" $(($NUMERO*2)) read -p "Dime un número (0 para salir): " NUMERO done ``` **Salida** ![variables](images/ejemplosSH/trece.png) ### 7.5 until (hasta que) ```bash #!/bin/bash # Pide un número y lo dobla. Continúa hasta que se introduzca 0 read -p "Dime un número (0 para salir): " NUMERO # -eq significa "es igual" until [ $NUMERO -eq 0 ]; do echo "El doble de $NUMERO es :" $(($NUMERO*2)) read -p "Dime un número (0 para salir): " NUMERO done ``` **Salida** (Se ve igual al anterior) ![variables](images/ejemplosSH/trece.png) ### 7.6 select (menu) ```bash #!/bin/bash echo "Elige una opción:" select RESP in Chiste Refran Poema Salir; do case $RESP in Chiste) echo "Soy muy indeciso... o no";; Refran) echo "Cria cuervos y tendras muchos";; Poema) echo "Tu corazón hace tolón";; Salir) break # Rompe el bucle select ;; esac done ``` **Salida** ![variables](images/ejemplosSH/catorce.png) ## 8. Funciones ### 8.1 Funcion con variables locales ```bash #!/bin/bash # Definición de la función function saludo { # Esta variable es local, solo existe dentro de saludo local NOMBRE="Jose Antonio" echo "Hola señor $NOMBRE encantado de conocerle" } NOMBRE="Juana" # Variable global saludo # Llamada a la función # Muestra el valor de la variable global, que no ha cambiado echo "En el script principal, mi nombre es $NOMBRE" ``` **Salida** ![variables](images/ejemplosSH/quince.png) ### 8.2 Funcion con parametros y return ```bash #!/bin/bash # Definición de la función function suma () { # $1 es el primer parámetro, $2 es el segundo c=$(expr $1 + $2) # Ojo: el doc usa $a y $b, pero $1 y $2 es más estándar para parámetros return $c # Devuelve el resultado } # --- Cuerpo principal del script --- a=5 b=10 suma $a $b # Llama a la función y le pasa $a y $b como $1 y $2 resultado=$? # Captura el valor devuelto por 'return' echo "El resultado de la suma es: " $resultado # Salida: El resultado de la suma es: 15 ``` **Salida** ![variables](images/ejemplosSH/dieciseis.png)