我正在尝试在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,})定义整数
如何检索字符串中令牌的位置,以及如何检索运算符?
答案 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"