シェルスクリプトを使用して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
。数値が正しくない場合は構文エラーを返します。例えば:
9z
、5.6.7
、8..
、など。
答え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.