GNU/Linux >> LINUX-Kenntnisse >  >> Linux

BASH:Wie man mit Zahlen in einer Pipe arithmetisch rechnet

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

Das {} erstellt eine Gruppierung. Sie könnten stattdessen ein Skript dafür erstellen.


Ich würde schreiben:

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

Wir können es uns als „Karte“ (funktionale Programmierung) vorstellen. Es gibt viele Möglichkeiten, eine "map"-Funktion in Bash zu schreiben (mit stdin, function args, ...), zum Beispiel:

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. Wie werden Integer- und Float-Berechnungen in Bash oder anderen Sprachen/Frameworks durchgeführt?

  2. Wie erkennt man Bash>=4.0?

  3. So echoen Sie eine neue Zeile in Bash-Shell-Skripten

  4. So aktualisieren Sie die Ubuntu-IP und den Hostnamen über Bash

  5. Wie teste ich, ob eine Variable in Bash eine Zahl ist?

So kommentieren Sie in Bash

So zeigen Sie den Bash-Verlauf ohne Zeilennummern an

So verwenden Sie den Echo-Befehl in Bash-Skripten unter Linux

So führen Sie ein Bash-Skript aus

Wie Echo in Datei

Wie kann ich eine heruntergeladene Datei in Bash an die Standardausgabe weiterleiten?