GNU/Linux >> Tutoriales Linux >  >> Linux

BASH:cómo realizar operaciones aritméticas con números en una tubería

echo 1 2 3 4 5|{
  read line; 
  for i in $line;
  do
    echo -n "$((i * i)) "; 
  done; 
  echo
}

El {} crea una agrupación. En su lugar, podría crear un script para eso.


Yo escribiría:

echo "1 2 3 4 5" | {
  for N in $(cat); do
    echo $((N ** 2))
  done | xargs
}

Podemos pensar en ello como un "mapa" (programación funcional). Hay muchas formas de escribir una función de "mapa" en bash (usando stdin, argumentos de función, ...), por ejemplo:

map_stdin() {
  local FUNCTION=$1
  while read LINE; do
    $FUNCTION $LINE
  done
}

square() { echo "$(($1 * $1))"; }

$ echo "1 2 3 4 5" | xargs -n1 | map_stdin square | xargs
1 4 9 16 25

Linux
  1. Cómo escribir un bucle en Bash

  2. ¿Cómo depurar un script Bash?

  3. ¿Cómo hacer eco de una explosión?

  4. ¿Cómo detectar Bash> =4.0?

  5. Cómo evaluar cadenas como números en Bash

Cómo comentar en Bash

Cómo mostrar el historial de Bash sin números de línea

Cómo usar el comando echo en Bash Scripts en Linux

Cómo ejecutar un script Bash

Cómo hacer eco en un archivo

¿Cómo puedo contar la cantidad de caracteres en una variable Bash?