GNU/Linux >> Znalost Linux >  >> Linux

BASH:jak provádět aritmetiku na číslech v rouře

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

{} vytvoří seskupení. Místo toho byste pro to mohli vytvořit skript.


Napsal bych:

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

Můžeme si to představit jako „mapu“ (funkční programování). Existuje mnoho způsobů, jak zapsat funkci "map" v bash (pomocí stdin, funkce args, ...), například:

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. Jak napsat smyčku v Bash

  2. Jak provádět celočíselné a plovoucí výpočty v Bash nebo jiných jazycích/rámcích?

  3. Jak zopakovat nový řádek ve skriptech Bash Shell

  1. Jak mohu spočítat počet znaků v proměnné Bash

  2. Jak bash testuje „nepravdu“?

  3. Jak převedu stažený soubor na standardní výstup v bash?

  1. Jak ladit Bash skript?

  2. How To Echo A Bang!?

  3. Jak nastavit parametry, když Pipe Bash Script to Bash?