Ejemplos Shell script

1. Hola mundo

#!/bin/bash 
echo "Hola Mundo" 

Salida: hola_mundo

2. Variables

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

Salida variables

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 variables

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 variables

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 variables

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 variables

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 variables

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 variables

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 variables

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 variables

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 variables

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 variables

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 variables

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) variables

7.6 select (menu)

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

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 variables

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 variables