2017-06-12 23 views
0

シェルスクリプトの初心者です。私の入力ファイルは以下のようになります:シェルスクリプトで文字列を10進数に変換して計算する

1.54 
3.235 
.7 

私はこのファイルを1つの変数にして読みます。

ONE=`sed -n '1p' file`; 
TWO=`sed -n '2p' file`; 
THREE=`sed -n '3p' file`; 

ここで、これらの変数に対して(乗算、除算などの)計算を行う必要があります。 誰でも助言してください。

+0

はあなたが変数を出力しようとしたことがありますか?同じコマンドを使用してそれらの値を入力すると、すべて同じ値が含まれているはずです。 – choroba

+0

どのようなシェルを使用していますか?いくつかのシェルは浮動小数点演算をサポートしていません。 – choroba

+0

@チョロバ、それはタイプミスだったので、今修正しました。 – Srikanth

答えて

1

bash浮動小数点演算(整数演算のみ)はサポートされていません。操作をbcのようなツールに渡す必要があります。例えば

:あなたはこのように行うことができます

DIV=$(echo "scale=3; $ONE/$TWO" | bc) 
echo $DIV 

MUL=$(echo "scale=3; $ONE/$DIV" | bc) 
echo $MUL 
+0

これは私が探しているものです。ありがとう! – Srikanth

0

bcを使用してこれを行うことができます。たとえば、echo "$ONE + $TWO + $THREE" | bcは、これらの数値の合計を示します。

+0

私はこれを試しました、それはエコーのためだけに働いています。なぜ結果を別の変数に取り込んでさらに計算をすることができないのですか? – Srikanth

+0

'someOtheRVariable = $(echo" $ ONE + $ TWO + $ THREE "| bc)'それから '$ someOtheRVariable" ' –

0

#!/bin/bash 

# read complete file in an array 
mapfile -t arr < file 

# do some calculations 
n=$(echo "${arr[0]} + ${arr[1]} - ${arr[2]}" | bc -l) 

# display resul 
echo "$n" 

# output 
# 4.075 
関連する問題