GNU/Linux >> Linux の 問題 >  >> Linux

BASH:パイプ内の数値に対して算術演算を実行する方法

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

{} はグループ化を作成します。代わりに、そのためのスクリプトを作成できます。


私ならこう書きます:

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

それは「マップ」(関数型プログラミング)と考えることができます。 bash で「マップ」関数を作成する方法は多数あります (標準入力、関数引数などを使用)。例:

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. Bashでループを作成する方法

  2. Bashスクリプトをデバッグする方法は?

  3. バンをエコーする方法!?

  1. BashスクリプトをBashにパイプするときにパラメータを設定する方法は?

  2. バッシュを検出する方法>=4.0?

  3. Expr算術の括弧:3 *(2 + 1)?

  1. Bashで文字列を数値として評価する方法

  2. Bashで変数が数値かどうかをテストするにはどうすればよいですか?

  3. Bash変数の文字数をカウントするにはどうすればよいですか