シェルスクリプトを使用して2つの浮動小数点数を追加する

シェルスクリプトを使用して2つの浮動小数点数を追加する

シェルスクリプトを使用して2つの浮動小数点数を追加しようとしています。私はこれを試しました:

#!/bin/bash
if [ $# != 2 ]; then
    echo "2 arguments are required "
    exit
else
    x=$1
    y=$2
    sum = $x + $y
    echo ` sum = $sum | bc `
fi

たとえば、コマンドラインに2つのパラメータを指定すると、次のようになります。

bash filename.sh 2.4 5

...エラーが発生します。[ 2 != 2 ] command not found

答え1

else
    echo -n "sum = "
    echo "$1 + $2" | bc
fi

未解決の問題の後半を解決します。最初の質問はミステリーです。 " ["は組み込みコマンドなので、引用符がないと表示されません。[ $# != 2 ]言葉でどのように機能するのか理解できません。

答え2

使用bc:

    #!/bin/bash
    n="$@" 
    bc <<< "${n// /+}"

スクリプトが呼び出されると仮定するaddか、コードを簡単に貼り付けたい人のために、次のシェルのような関数を試してくださいadd() { n="$@"; bc <<< "${n// /+}"; }。関数とスクリプトは次のように動作します。

add 3.2 5.5
add 3.2 5.5 8.9
add {1..51}.{12..89}

使用された校正器bash支柱の拡張bc次の範囲の10進数として解釈される約4000個の文字列を生成します。1.12到着51.89

出力:

8.7
17.6
105436.89

両方のパラメータを確認する必要はありません。

  • それは加えることができる一つまたはそれ以上の引数、

  • 引数がない場合、出力は返されません。

  • 通常の文字列を無視するので、add 5 6.7 abc edf 9を返します20.7

  • 数値が正しくない場合は構文エラーを返します。例えば: 9z5.6.78..など。

答え3

2つの浮動小数点数を追加するために使用します。

echo 12.8 12.2 | awk '{print $1 + $2}'

Result:- 25

数値を変数に置き換えます。

あなたはそれを使用することができます

awk "BEGIN {print 12.8+12.2; exit}"

答え4

if [ "$#" != 2 ]; then
   echo "2 arguments are required"; exit 1
else
   x=$1 y=$2
   sum="[sum=]n $x $y + 2k p"
   echo "$sum" | dc
fi

結果:

sum=7.4

説明する:

We use the `dc` calculator by placing the two operands on the stack and
adding the two top of stack elements. And prior to adding, we place a
string `sum=` on the stack, and immediately print it which as a side effect
also removes it from the stack. The precision of the results is set to 2.

関連情報