Key*_*ate 6 bash shell-script bc
我需要传递某些变量来bc获得浮点输出,
var1=$((<some operation>))
var2=$((<some operation>)) #Needs var1
var3=$((<some operation>)) #Needs var2
bc -l <<< $var3 #Need output in Floating points
Run Code Online (Sandbox Code Playgroud)
输出:
(standard_in) 1: illegal character: $
Run Code Online (Sandbox Code Playgroud)
无论如何要克服这个?
更新:
diff=$(($epoc2-$epoc1))
var1=$(($diff / 60))
var2=$(($var1 / 57))
var3=`bc <<< 'scale=2; $var2'`
Run Code Online (Sandbox Code Playgroud)
简单的引号不会扩展$变量。你必须使用双引号:
var3=`bc <<< "scale=2; $var2"`
Run Code Online (Sandbox Code Playgroud)
另一方面,$var1并且$var2不会存储浮动(bash不管理它们),因此您可以bc使用。
diff=$(($epoc2-$epoc1))
var1=$(bc <<< "scale=3 ; $diff / 60")
var2=$(bc <<< "scale=3 ; $var1 / 57")
var3=$(bc <<< "scale=2; $var2")
Run Code Online (Sandbox Code Playgroud)