GNU/Linux >> Tutoriels Linux >  >> Linux

BASH :comment effectuer de l'arithmétique sur des nombres dans un tube

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

Le {} crée un regroupement. Vous pouvez plutôt créer un script pour cela.


J'écrirais :

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

On peut le considérer comme une "carte" (programmation fonctionnelle). Il existe de nombreuses façons d'écrire une fonction "map" en bash (en utilisant stdin, les arguments de fonction, ...), par exemple :

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. Comment faire des calculs entiers et flottants, dans Bash ou d'autres langages/frameworks ?

  2. Comment définir les paramètres lorsque Pipe Bash Script to Bash ?

  3. Comment détecter Bash>=4.0 ?

  4. Parenthèse dans Expr Arithmétique :3 * (2 + 1) ?

  5. Comment faire écho à une nouvelle ligne dans les scripts shell bash

Comment commenter dans Bash

Comment afficher l'historique de Bash sans numéros de ligne

Comment utiliser la commande echo dans les scripts Bash sous Linux

Comment exécuter un script bash

Comment faire écho dans le fichier

Comment rediriger un fichier téléchargé vers la sortie standard dans bash ?