使用 bash 函数在命令行上做简单的数学运算:$1 除以 $2(也许使用 bc)

使用 bash 函数在命令行上做简单的数学运算:$1 除以 $2(也许使用 bc)

有时我需要将一个数字除以另一个数字。如果我可以为此定义一个 bash 函数,那就太好了。到目前为止,我被迫使用这样的表达方式

echo 'scale=25;65320/670' | bc

但如果我能定义一个看起来像这样的 .bashrc 函数那就太好了

divide () {
  bc -d $1 / $2
}

答案1

我有一个方便的 bash 函数,名为calc

calc () {
    bc -l <<< "$@"
}

用法示例:

$ calc 65320/670
97.49253731343283582089

$ calc 65320*670
43764400

您可以更改此设置以适合自己。例如:

divide() {
    bc -l <<< "$1/$2"
}

笔记: <<<是一个这里的字符串它被输入到 的标准输入中bc。您不需要调用echo.

答案2

Bash 在某种程度上可以自己进行数学计算。但它对准确性没有用,因为它是四舍五入的。

[user]$ echo $(( 10/5 ))
2

但你是完全正确的 - bash 函数将是一个简单的快捷方式,并且你的示例基本上可以工作。

divide() {
  echo "scale=25;$1/$2" | bc
}

将其放入 .bashrc 中,然后您可以:

[user]$ divide 10 5
2.0000000000000000000000000

答案3

您可能知道 bash 内置“expr”,如下所示

$ expr 60 / 5
12

它仅限于整数并且需要参数之间的空格。

是什么阻止您按照已经使用的 echo 表达式定义函数? IE

 divide () {
   echo $1/$2 | bc
 }

答案4

如果您已calc在系统上安装并且不喜欢舍入,您可以:

div() { calc "$1 / $2"; }

相关内容