4. Sintaxis básica de Bash

4.1. Formato del archivo

  • Sin formato obligatorio (también .sh)

4.2. Software necesario

  • Editor de código
  • Terminal Shell (Linux)

4.3. Estructura del código

  • En caso de escribir un script, puede necesitar una etiqueta de inicio
    #!/bin/bash (puede variar según donde se encuentre el interpretador bash)
  • No se requiere terminar las sentencias con ningún carácter (se puede usar punto y coma para evitar problemas), salvo que se quieran incluir dos en la misma línea, en tal caso se separan con punto y coma
  • No se requiere indentación
  • Cuando se quiere modificar el output (salida) de un comando con otro comando, se usa | entre los comandos
  • Comentarios empiezan con # (uno por línea)
  • Los scripts necesitan tener permiso de ejecución (+x)

4.4. Variables

  • Se inician directamente, no se declaran
  • x=5
  • y=Hola
  • y=”Hola”
  • z=”Hola Mundo”
  • No se admiten espacios entre el símbolo =

4.5. Argumentos

  • Se indican al iniciar el script, después del nombre
  • nombrescript arg1 arg2
  • Dentro del script, se indican con $1$2, etc.
  • echo “El primer argumento es $1”
  • echo $#: Muestra el número de argumentos
  • Para poder usar opciones (-e file):
while [[ $# -gt 0 ]]
 do
 key="$1"
 case $key in
     -i|--input)
     INPUT="$2"
     shift # past argument
     shift # past value
     ;;
     -o|--output)
     OUTPUT="$2"
     shift # past argument
     shift # past value
     ;;
     -c|--codec)
     CODEC="$2"
     shift # past argument
     shift # past value
     ;;
         -b|--bitrate)
     BITRATE="$2"
     shift # past argument
     shift # past value
     ;;
     *)    # unknown option
     POSITIONAL+=("$1") # save it in an array for later
     shift # past argument
     ;;
 esac
 done
 set -- "${POSITIONAL[@]}" # restore positional parameters

4.6. Imprimir texto - concatenación

  • echo “Hola Mundo”
  • echo “Hola $x”
  • echo “Hola ${x}”
  • echo "Contenido: `cat archivo.txt`"
  • Añade nueva línea automáticamente, salvo dentro del comando
    • echo “Hola\nMundo”: No funciona
    • printf “Hola\nMundo”: Funciona

4.7. Arrays

  • Engloban varios valores en la misma variable
  • x=(2 5 8)
  • y=(Jose Ricardo “Jose Antonio”)
  • Índices empiezan en cero
    • echo ${y[1]} => Ricardo
  • Añadir elemento
    • x[3]=10
  • Mostrar número elementos de un array
    • echo ${#x[@]}

4.8. Operadores

  • Aritméticos
    + - * / % **
  • Booleanos
    • Para strings
      =
      ==
      !=
      -z $a ($a vacía)
    • Para números
      -eq (igual que)
      -gt (mayor que)
      -ge (mayor o igual que)
      -lt (menor que)
      -le (menor o igual que)
      -ne (no es igual que)
    • Otros
      &&
      ||

4.9. Condicionales

  • If
    if [ $x -eq 5 ]
    then echo “$x es igual a 5”
    fi
    if [ $y == “Hola” ]; then
    echo $y
    fi
    • Se requieren espacios en cada parte de la condición del if
  • Elif y Else
    if [ $y -lt 6 ]
    then echo “ok”
    elif [ $y -lt 10 ]
    then echo “not bad”
    else
    echo “wrong”
    fi
  • Case
    case $x in
    1) echo “x no es igual a 1”;
    2) echo “Bien, x es igual a 2”;
    esac

4.10. Bucles

  • For
    for x in array
    do echo $x
    done
  • While
    i=5
    while [$i -gt 0]
    do echo $i
    i=$(($i - 1))
    done