Ejemplos Shell script
1. Hola mundo
#!/bin/bash
echo "Hola Mundo"
Salida:

2. Variables
#!/bin/bash
Numero=5 # Asignación de un valor
echo "el valor de la variable es " $Numero # Lectura del valor
Salida

Si queremos que el usuario introduzca un valor:
#!/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

3. Paso de parametros
#!/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

4. Expansiones
4.1 Expansion de comando
# 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

4.2 Expansion aritmetica
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

6. Operaciones (expr y test)
#!/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

7. Estructuras de control
7.1 If
Comparacion numerica (mayor que):
#!/bin/bash
NUMERO=7
if [ $NUMERO -gt 5 ]; then
echo "Numero es mayor que 5"
fi
Salida

Comparacion de cadenas (if-else-elif)=:
#!/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

7.2 Case
#!/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

7.3 for (para)
Sintaxis numerica:
#!/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

Sintaxis de lista:
#!/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

7.4 while (mientras)
#!/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

7.5 until (hasta que)
#!/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)

8. Funciones
8.1 Funcion con variables locales
#!/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

8.2 Funcion con parametros y return
#!/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

