RegEx用于数学表达式

时间:2014-04-18 01:02:30

标签: regex bash shell unix scripting

我正在尝试在bash脚本中对用户输入进行比较/搜索。我希望用户能够输入该函数,计算并返回函数...如何判断该组所在的字符串中的位置,以便我能按顺序保存?

calculate 7 + 3
calculate 9.37 / 7.21
calculate 5 100 * 2.21
calculate 2783.34 – 25  

calculate -g hypotenuse 2.34 5.1   #-g argument for geometric
calculate -p 34.34/343             #-p argument for precision

calculate -g hypotenuse -p 2.34 5.1   #geometric and precision

编辑:按组,我认为我的意思是“令牌”。

例如:我所知道的事情: ([ - ] )([0-9] )([。] *)([0-9] {1,})定义整数或实数

([0-9] {1,})定义整数

如何检索字符串中令牌的位置,以及如何检索运算符?

1 个答案:

答案 0 :(得分:2)

如上所述,您可以使用bc来执行算术运算。而且,这可能是最好的解决方案,因为bash本身只能进行整数数学运算。

如果你想得到一个浮点数的整数和小数部分,你可以使用以下代码:

a=123.456 # an example
a_int=${a%.*}
a_fr=${a#*.}

在您的示例中,每个“组”表示为单个参数,即:

print_args() {
    for a in "$@"; do
        echo "arg=\"$a\""
    done
}
print_args 9.37 / 7.21

将打印

arg="9.37"
arg="/"
arg="7.21"