乘法命令行终端上(Multiplication on command line terminal)

2019-06-25 12:19发布

我使用的是串行终端提供输入到我们的实验室实验。 我发现,使用

$ echo "5X5"

刚刚返回的字符串"5X5" 。 有没有执行乘法运算的命令?

Answer 1:

是的,你可以使用bash的内置算术展开$(( ))做一些简单的数学

$ echo "$((5 * 5))"
25

检查Bash的参考手册壳牌运算部分运营商的完整列表。

为了完整起见,其他指出的那样,如果你需要的任意精度, bcdc会更好。



Answer 2:

对于更高级的和精确的数学考虑使用BC(1)。

echo "3 * 2.19" | bc -l 
6.57


Answer 3:

内部方法

击支持算术扩展用$(( expression )) 例如:

$ echo $(( 5 * 5 ))
25

外部方法

一些实用程序提供算术,包括BCEXPR。

$ echo '5 * 5' | /usr/bin/bc
25

$ /usr/bin/expr 5 \* 5
25


Answer 4:

经典的解决办法是:

 expr 5 \* 5

另外一个不错的选项是:

 echo 5 5\*p | dc

这两种解决方案将只使用整数操作数工作。



Answer 5:

一个简单的shell功能(没有使用sed需要)应该做的解释“5X5”的把戏

$ function calc { bc -l <<< ${@//[xX]/*}; };
$ calc 5X5
25
$ calc 5x5
25
$ calc '5*5'
25


Answer 6:

我使用这个功能,使用bc ,因此支持浮点计算:

c () { 
    local a
    (( $# > 0 )) && a="$@" || read -r -p "calc: " a
    bc -l <<< "$a"
}

例:

$ c '5*5'
25
$ c 5/5
1.00000000000000000000
$ c 3.4/7.9
.43037974683544303797

bash的算术扩展不支持浮点数(但Korn shell程序和的zsh做)。

例:

$ ksh -c 'echo "$((3.0 / 4))"'
0.75


Answer 7:

我有一个简单的脚本我用这个:

me@mycomputer:~$ cat /usr/local/bin/c

#!/bin/sh

echo "$*" | sed 's/x/\*/g' | bc -l

它改变了x*因为*是在shell特殊字符。 按如下方式使用它:

  • c 5x5
  • c 5-4.2 + 1
  • c '(5 + 5) * 30' (你还有如果表达式包含任何括号使用引号)。


Answer 8:

如果你喜欢蟒蛇,并有安装包的选项,你可以使用这个工具 ,我做。

# install pythonp
python -m pip install pythonp

pythonp "5*5"
25

pythonp "1 / (1+math.exp(0.5))"
0.3775406687981454

# define a custom function and pass it to another higher-order function
pythonp "n=10;functools.reduce(lambda x,y:x*y, range(1,n+1))"     
3628800


文章来源: Multiplication on command line terminal