LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

Estas son algunas de las operaciones aritméticas simples que podemos hacer el Shell Script

Aritméticas

En un Bash podemos realiza directamente sumas, restas, divisiones, multiplicaciones y resto de números enteros.

Para ello tendemos que poner la operación dentro de $(( )).

Operadores: +, -, /, *, % (% es el resto que resulta al realizar la división entre dos números)

  • "+": Para sumar valores.
  • "-": Para restar valores.
  • "*": Para multiplicar valores.
  • "/": Para dividir valores.
  • "%": Para calcular el resto de una división.

Por ejemplo:

  • echo $((25+6))

echo $((24%5)) daría como resultado 4

Para operaciones con decimales tendríamos que ayudarnos de comandos externos como bc.

Ejemplo:

  • echo 6.5*4.99 | bc

La lógica de Bash

Para el terminal, los caracteres que tienen un significado lógico en la comparación o evaluación de operaciones aritméticas y de archivos son:

Evaluación de operaciones aritméticas

  • "-lt": Menor que
  • "-le": Menor o igual que
  • "-eq": Igual que
  • "-ge": Mayor o igual que
  • "-gt": Mayor que
  • "-ne": Distinto que

La finalidad de las operaciones lógicas es determinar si algo es verdadero o falso. Para poder hacer multitud de comprobaciones, tenemos al orden test. Se puede ejecutar con el comando test seguido de la comprobación que queremos hacer, o delimitar la comprobación entre corchetes.

Es decir, si quiero comprobar si $A es igual a $B puedo poner test $A = $B, pero también puedo poner [ $A = $B ]

Operaciones que podemos hacer con test

Comparación de números

SINTAXIS DESCRIPCIÓN
ENTERO1 -eq ENTERO2 ENTERO1 es igual que ENTERO2
ENTERO1 -ge ENTERO2 ENTERO1 es mayor o igual que ENTERO2
ENTERO1 -gt ENTERO2 ENTERO1 es mayor que ENTERO2
ENTERO1 -le ENTERO2 ENTERO1 es menor que o igual que ENTERO2
ENTERO1 -lt ENTERO2 ENTERO1 es menor que ENTERO2
ENTERO1 -ne ENTERO2 ENTERO1 no es igual que ENTERO2

Comparación de texto

SINTAXIS DESCRIPCIÓN
CADENA1 = CADENA2 CADENA1 es igual que CADENA2
CADENA1 > CADENA2 CADENA1 es mayor que CADENA2
CADENA1 < CADENA2 CADENA1 es menor que CADENA2
CADENA1 != CADENA2 CADENA1 no es igual que CADENA2
-n CADENA Cierto si la longitud de la cadena es distinta de cero

Comprobaciones sobre ficheros y directorios

SINTAXIS DESCRIPCIÓN
-d RUTA Cierto si la RUTA existe y es un directorio
-e RUTA Cierto si la RUTA existe sea el elemento que sea
-f RUTA Cierto si la RUTA existe y es un fichero normal
-r RUTA Cierto si la RUTA existe y se puede leer
-w RUTA Cierto si la RUTA existe y se puede escribir
-x RUTA Cierto si la RUTA existe y es ejecutable
-s RUTA Cierto si la RUTA existe y su tamaño es mayor que cero

Otras expresiones

! EXPRESIÓN Negación: cierto si la EXPRESIÓN es falsa
EXPRESIÓN1 -a EXPRESIÓN2 Cierto si EXPRESIÓN1 y EXPRESIÓN2 son ciertas. Las dos
EXPRESIÓN1 -o EXPRESIÓN2 Cierto si EXPRESIÓN1 o EXPRESIÓN2 son ciertas. Alguna de ellas

Uso principal

La utilidad que tienen las operaciones lógicas es la toma de decisiones. Así podré realizar una funciones si una expresión (o pregunta) es verdadera u otras si es falsa.

Suponiendo que hacemos un script que le indicamos con el primer parámetro nuestra edad, haríamos:

  • Si $1 es mayor o igual que 18
  • muestro un mensaje de que eres mayor de edad
  • en caso contrario
  • muestro un mensaje diciendo que no lo eres

En el lenguaje de script:

  • if [ $1 -ge 18 ]; then
  •     echo “Eres mayor de edad”
  • else
  •     echo “Eres menos de edad”
  • fi

Otro ejemplo: Script caracruz.sh


#!/bin/bash
VALOR=$RANDOM
RESTO=$((VALOR%2))
# SIFUERACADENA="\"$RESTO\""
echo $RESTO
if [ $RESTO -eq 0 ] ; then
  printf "\033[1;32m - - - - - - - - - - > ¡¡ CRUZ !! --> $VALOR \n"
  printf "              \n"
  printf "  ___         \n"
  printf " /    \       \n"
  printf "| CRUZ |      \n"
  printf " \__  /       \n"
  printf "              \n"
fi
if [ $RESTO -eq 1 ] ; then
  printf "\033[1;33m - - - - - - - - - - > ¡¡ CARA !! --> $VALOR"
  printf "              \n"
  printf "  ___         \n"
  printf " /    \       \n"
  printf "| CARA |      \n"
  printf " \__  /       \n"
  printf "              \n"
fi
printf "\033[0;37m"
echo ""

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Formulario de acceso

Filtro por Categorías