シェルスクリプトの初心者です。私の入力ファイルは以下のようになります:シェルスクリプトで文字列を10進数に変換して計算する
1.54
3.235
.7
私はこのファイルを1つの変数にして読みます。
ONE=`sed -n '1p' file`;
TWO=`sed -n '2p' file`;
THREE=`sed -n '3p' file`;
ここで、これらの変数に対して(乗算、除算などの)計算を行う必要があります。 誰でも助言してください。
シェルスクリプトの初心者です。私の入力ファイルは以下のようになります:シェルスクリプトで文字列を10進数に変換して計算する
1.54
3.235
.7
私はこのファイルを1つの変数にして読みます。
ONE=`sed -n '1p' file`;
TWO=`sed -n '2p' file`;
THREE=`sed -n '3p' file`;
ここで、これらの変数に対して(乗算、除算などの)計算を行う必要があります。 誰でも助言してください。
bash
浮動小数点演算(整数演算のみ)はサポートされていません。操作をbc
のようなツールに渡す必要があります。例えば
:あなたはこのように行うことができます
DIV=$(echo "scale=3; $ONE/$TWO" | bc)
echo $DIV
MUL=$(echo "scale=3; $ONE/$DIV" | bc)
echo $MUL
これは私が探しているものです。ありがとう! – Srikanth
bc
を使用してこれを行うことができます。たとえば、echo "$ONE + $TWO + $THREE" | bc
は、これらの数値の合計を示します。
私はこれを試しました、それはエコーのためだけに働いています。なぜ結果を別の変数に取り込んでさらに計算をすることができないのですか? – Srikanth
'someOtheRVariable = $(echo" $ ONE + $ TWO + $ THREE "| bc)'それから '$ someOtheRVariable" ' –
:
#!/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
はあなたが変数を出力しようとしたことがありますか?同じコマンドを使用してそれらの値を入力すると、すべて同じ値が含まれているはずです。 – choroba
どのようなシェルを使用していますか?いくつかのシェルは浮動小数点演算をサポートしていません。 – choroba
@チョロバ、それはタイプミスだったので、今修正しました。 – Srikanth