0

我正在使用 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

谢谢你尽你所能的帮助。

[编辑:我还想不只是回显答案,而是将其存储为变量。]

4

3 回答 3

2

碰巧 perl 可以评估那个确切的表达式

$ x="1.e8*1.07**100"
$ y=$(perl -E "say $x")
$ echo $y
86771632556.6417
于 2013-06-06T23:33:52.200 回答
2

怎么样:

python -c "print $NUM"

顺便说一句,你可以写

BASE="1.e8*1.07**%d"

(事实上​​,你甚至不需要引号。)

于 2013-06-06T22:08:28.703 回答
2

在大多数 unix* 系统中,您会发现一个名为bc可以执行计算的工具。不过,您可能需要重写您的输入,我认为它接受^而不是**,而且我不确定该1.e8表示法。

于 2013-06-06T22:12:43.020 回答