GNU/Linux >> Linux Esercitazione >  >> Linux

BASH:come eseguire operazioni aritmetiche sui numeri in una pipe

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

{} crea un raggruppamento. Potresti invece creare uno script per questo.


Scriverei:

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

Possiamo pensarla come una "mappa" (programmazione funzionale). Ci sono molti modi per scrivere una funzione "map" in bash (usando stdin, function args, ...), per esempio:

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. Come eseguire calcoli interi e float, in Bash o in altre lingue/framework?

  2. Come impostare i parametri quando Pipe Bash Script su Bash?

  3. Parentesi nell'aritmetica espr:3 * (2 + 1)?

  4. Come valutare le stringhe come numeri in Bash

  5. Come aggiornare l'IP e il nome host di Ubuntu tramite Bash

Come scrivere un ciclo in Bash

Come commentare in Bash

Come visualizzare la cronologia di Bash senza numeri di riga

Come utilizzare il comando echo negli script Bash in Linux

Come eseguire uno script Bash

Come fare eco in un file