viernes, 3 de marzo de 2017

(( )) - Diseñado para enteros

Además del comando compuesto [[ ]], bash también proporciona el comando compuesto (( )), que es útil para operar con enteros. Soporta una serie completa de evaluaciones aritméticas, un asunto que veremos a fondo en el Capítulo 34.

(( )) se usa para realizar pruebas de verdad aritmética. Una prueba de verdad aritmética es verdadera si el resultado de la evaluación aritmética no es cero.

[me@linuxbox ~]$ if ((1)); then echo "It is true."; fi
It is true.
[me@linuxbox ~]$ if ((0)); then echo "It is true."; fi
[me@linuxbox ~]$

Usando (( )), podemos simplificar ligeramente el script test-integer2 así:

#!/bin/bash

# test-integer2a: evaluate the value of an integer.

INT=-5

if [[ "$INT" =~ ^-?[0-9]+$ ]]; then
     if ((INT == 0)); then
          echo "INT is zero."
     else
          if ((INT < 0)); then
               echo "INT is negative."
          else
               echo "INT is positive."
          fi
          if (( ((INT % 2)) == 0)); then
               echo "INT is even."
          else
               echo "INT is odd."
          fi
     fi
else
     echo "INT is not an integer." >&2
     exit 1
fi

Fíjate que usamos los signos menor-que y mayor-que y que == se usa para comprobar equivalencias. Esta es una sintaxis con un aspecto más natural para trabajar con enteros. Fíjate también, que ya que el comando compuesto (( )) es parte de la sintaxis del shell en lugar de un comando ordinario, y que sólo trabaja con enteros, puede reconocer variables por el nombre y no requiere expansión para hacerlo. Veremos (( )) y la expansión aritmética relacionada más adelante en el Capítulo 34.

No hay comentarios:

Publicar un comentario