.SH - LINUX

Scripts .sh • Adrián L. G. P.


Creación del archivo

mano script.sh
chmod +x script.sh

Necesario para crear un script (ponerlo al principio del archivo):

#!/bin/bash

Parámetros

Al ejecutar un archivo se le puede pasar argumentos:

./script.sh arg1 arg2 ...

Dentro de un archivo, para hacer referencia a estos argumentos:

$num: LLamar un argumento en "num" del órgen 1 al máximo de 9.
$0: Devuelve el nombre del script / función.
$*: Devuelve a todos los argumentos separados por espacio.
$#: Devuelve el n. total de parámetros que se pasaron.

Básico

Imprimir un texto en pantalla:

echo 'texto'

Pedir un texto y guardarlo en la variable nombre_var:

read -p 'texto' nombre_var

Esperar cierto tiempo antes de hacer una acción:

sleep [Segundos]

Llamar una variable

Todo lo que esté dentro de " " se interpreta como variables y texto. En cambio en ' ' se interpresa todo como texto.

echo "$nombre_var"

Comparadores

Para texto:

valor = valor
valor != valor
valor < valor
valor > valor
-n valor
-z valor

← Igual a | == hace lo mismo pero permititiendo comodines

← No igual a

← Menor que

← Mayor que

← No es nulo

← Es nulo

Para números:

valor -eq valor
valor -ne valor
valor -lt valor
valor -gt valor
valor -le valor
valor -ge valor

← Igual a

← No igual a

← Menor que

← Mayor que

← Menor o igual que

← Mayor o igual que

Para archivos y carpetas:

-e ruta
-r ruta

← Si existe un archivo o carpeta | O se puede hacer con el comando test

← Si tiene permisos de lectura | Puede ser -w, -x

Condicionales

Formato:

if [ condición1 ]; then
    // Qué hacer si se cumple la condición 1

elif [ condición2 ]; then
    // Qué hacer si se cumple la condición 2

else
    // Qué hacer si no se cumple ninguna condición

fi

Siempre acaba en fi para así indicar el final de la condicional.

Si se cumplen ambas condiciones:

if [ condición1 ] && [ condición2 ]; then
    // Contenido
fi

Una condición u la otra:

if [ condición1 ] || [ condición2 ]; then
    // Contenido
fi

Si no se cumple la condición:

if ! [ condición1 ]; then
    // Contenido
fi

Función CASE

Para ejecutar varias acciones, dependiendo del valor de una variable:

read -p 'texto' var
case $var in
1)
echo 'El valor es 1'
;;
rojo)
echo 'El valor es rojo'
;;
*)
echo 'Este valor no estaba en nigún _)'
;;
esac

Bucle FOR

Formato para recorrer un conjunto de valores hasta llegar al final:

for nombre_var in conjunto; do
    // Contenido
done

Ejemplo:

for i in 1 2 3 4 5; do
    echo "$i"
done

Función WHILE

Ejecuta su contenido si la condición es verdadero in definidamente hasta que se pare:

while [ condición ]; do
    // Contenido
done

Función UNTIL

Lo mismo que WHILE:

until [ condición ]; do
    // Contenido
done

Adrián L. G. P.