terminal

Aprende shell script con ejemplos (V)

Una de las ventajas que tiene shell script frente a otros lenguajes de programación es que está integrado con el sistema operativo. Las operaciones con ficheros son algo natural en él pues trabajar con ficheros es una de las principales tareas de los shell script es el tratar con archivos.

1. Comparaciones de ficheros.

Shell script tiene un montón de expresiones para comparar ficheros. Veamos las más útiles:

  • if [ -a $FICHERO ] es un fichero
  • If [ -f $FICHERO ] es un fichero regular
  • If [ -d $FICHERO ] es un directorio
  • If [ -r $FICHERO ] es un fichero y tiene permiso lectura
  • If [ -w $FICHERO ] es un fichero y tiene permiso escritura
  • If [ -x $FICHERO ] es un fichero y tiene permiso de ejecución
  • If [ -s $FICHERO ] es un fichero y tiene tamaño mayor que 0
  • If [ $FICHERO1 -nt $FICHERO2 ] fichero1 es mas nuevo que fichero2
  • If [ $FICHERO1 -ot $FICHERO2 ] fichero1 es mas antiguo que fichero2
  • Ejercicio resuelto.
    Se pide crear un fichero script pruebafich.sh que tome dos parámetros (nombre de fichero ) como entrada y que compruebe que ambos ficheros existen, son ficheros regulares y muestre el nombre del fichero mas antiguo.

    Veamos una posible solución a este ejercicio resuelto:

    sh5_1

    Ejercicio propuesto.
    Crea un script que muestre el número de ficheros regulares y directorios existentes en un directorio concreto.

    2. Comparaciones de números enteros.

    Shell script tiene muchos operadores con los que se pueden construir expresiones de comparación de números enteros. Veamos cuales son las más comunes:

  • -eq. Es igual a (equal)
  • If [ «$a» -eq «$b» ]

  • -ne. No es igual a (not equal)
  • If [ «$a» -ne «$b» ]

  • -gt. Mayor que (greater than)
  • If [ «$a» -gt «$b» ]

  • -ge. Mayor o igual (greater or equal)
  • If [ «$a» -ge «$b» ]

  • -lt. Menor que (less than)
  • If [ «$a» -lt «$b» ]

  • -le. Menor o igual que (less or equal)
  • If [ «$a» -le «$b» ]

  • < Menor que. Para usar este operador necesitamos usar un doble paréntesis.
  • ((«$a»)<("$b"))

  • <= Menor o igual que. Para usar este operador necesitamos usar un doble paréntesis.
  • ((«$a»)<=("$b"))

  • > Mayor que. Para usar este operador necesitamos usar un doble paréntesis.
  • ((«$a»)>(«$b»))

  • >= Mayor o igual que. Para usar este operador necesitamos usar un doble paréntesis.
  • ((«$a»)>=(«$b»))

    3. El comando shift.

    El comando shift desplaza los argumentos pasados al script. Por ejemplo si le paso una serie de parámetros a un script, el comando shift 3 movería 3 posiciones los parámetros pasados:
    $1=$4 $2=$5 …

    Veamos como funciona. Vamos a realizar un script al que se le pasen 6 parámetros. El script mostrará los parámetros 1, 2 y 3, despues ejecutará el comando shift 3 y mostrará nuevamente los parámetros 1, 2 y 3 (que serán el 4, 5 y 6).

    #!/bin/bash
    echo "$1 $2 $3"
    shift 3
    echo "$1 $2 $3"
    
    Ejercicio propuesto.
    Copia y ejecuta el script anterior. Comprueba que funciona.

    Si te ha gustado este post o lo has encontrado interesante no dejes de continuar aprendiendo shell script en la sexta entrega.

    One thought on “Aprende shell script con ejemplos (V)

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada.

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.