C风格的任意精度计算器传递变量

时间:2015-05-18 10:43:32

标签: bash

我有一个calc的问题。

我需要将一些变量从命令行或脚本传递给calc;这些变量是复数,如a=2+5ib=1-i

我的目标是在bash脚本中包含此过程;我测试了像

这样的东西
$ calc(){ awk "BEGIN { print "$*" }"  ;}
$ a=7; b=3;
$ calc $a/$b
2.33333

但不幸的是,如果a或b很复杂,我的代码就会失败,给出错误的,不合理的结果。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

只需将calc函数中的awk更改为其等效的python:

$ calc () { python -c "print ($*)"; }
$ calc 2 + 3
5
$ calc "(3 + 4j) * 2"
(6+8j)
$ calc "(2 + 5j) / (1 - 2j)"
(-1.6+1.8j)

如果您希望/需要使用i代替j,请将功能更改为
calc () { python -c "print (${*//[Ii]/j})"; }