有时我需要将一个数字除以另一个数字。如果我可以为此定义一个 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"; }