我正在使用Mac OSX并使用bash作为我的shell。我目前有一个字符串,我希望将其作为数字进行评估。当我回复字符串时,我得到1.e8*1.07**100
。是否有任何方法可以传递此字符串以作为数字进行评估?
为什么它是一个字符串开头的背景是因为表达式是逐步构建的。第一个1.e8*1.07**%%d
在代码中,然后用户输入一个整数作为1.07将被提升到的幂。所以在上面的例子中,用户将输入100,因此脚本卡住了1.e8*1.07**100
,这是我希望的正确表达式,但我希望在回显变量时进行评估在哪里存放。
代码的实际重要部分:
BASE=$(printf '1.e8*1.07**%%d')
#Get user input assigned to pow
NUM=$(printf ${BASE} ${pow})
echo $NUM #1.e8*1.07**100
感谢您提供的任何帮助。
[编辑:我也想不仅回应答案,而是将其存储为变量。]
答案 0 :(得分:2)
怎么样:
python -c "print $NUM"
顺便说一句,你可以写
BASE="1.e8*1.07**%d"
(事实上,你甚至不需要引号。)
答案 1 :(得分:2)
在大多数unix *系统中,您会找到一个名为bc
的工具,可以执行计算。您可能需要重写输入,我认为它接受^
而不是**
,并且我不确定1.e8
符号。
答案 2 :(得分:2)
碰巧perl可以评估那个确切的表达式
$ x="1.e8*1.07**100"
$ y=$(perl -E "say $x")
$ echo $y
86771632556.6417