在zsh中定义数学函数?

在zsh中定义数学函数?,zsh,Zsh,这几乎肯定是一个重复,但我找不到一个与我所寻找的职位 我主要使用bash进行工作,但偶尔使用zsh作为浮点计算器。虽然zsh/mathfunc库对于sqrt、sin等都很好,但我希望在zsh中定义其他数学函数,例如pow,以便它们能够正常工作: zsh% print $((pow(4.0, 4.0) + 1.0)) 257.0 (是的,我知道内置的**操作符,这只是一个示例) 我最接近这一点的方法是使用类似于print$($(pow 4.0 4.0)+1.0))的功能,如laviande22所

这几乎肯定是一个重复,但我找不到一个与我所寻找的职位

我主要使用bash进行工作,但偶尔使用zsh作为浮点计算器。虽然
zsh/mathfunc
库对于
sqrt
sin
等都很好,但我希望在zsh中定义其他数学函数,例如
pow
,以便它们能够正常工作:

zsh% print $((pow(4.0, 4.0) + 1.0))
257.0
(是的,我知道内置的
**
操作符,这只是一个示例)

我最接近这一点的方法是使用类似于
print$($(pow 4.0 4.0)+1.0))
的功能,如laviande22所示,但这会让人头痛


注意:我不是在寻找在裸zsh中键入命令时给出答案的答案,例如
zsh%pow 4
。我正在寻找一个可以在数学子系统中以给定形式使用的函数,即
zsh%print$((pow(4.0,4.0))

.zshrc
文件中定义函数,或者将包含函数定义的另一个shell脚本导入到您的RCF文件中如何

例如,您可以在
.zshrc
中编写如下函数:

# In ~/.zshrc

function pow() {
    res=1
    for i in {1..$2};
        res=$((res * $1))
    echo $res
}
然后您可以发出命令,如
pow24
,它将回显16。当您启动shell时,Zsh会加载rcfile中的任何内容,因此您不必每次都定义需要的所有函数。如果您不熟悉zsh或bash的语法,您可能需要用谷歌搜索它。或者你可以从这个开始

您还可以创建一个新的脚本文件并将其包含在rcfile中

# In ~/.zshrc

if [ -f ~/.custom_functions ]; then  # The file name is arbitrary.
    . ~/.custom_functions
fi

函数-M mathfn
可以进行救援。它定义了一个数学函数,因此我们可以使用算术风格的函数调用表达式,例如
mathfn(arg,…)

---


我看到了这个答案,这很有帮助,但不是我想要的。我对我的问题进行了编辑,希望能更清晰一些。这是可行的,但对于重新定义函数来说有点笨拙,尽管这不是一个问题,因为数学函数总是做同样的事情。非常感谢。
my-powi () {
  res=1
  for ((i=0; i<$2; i++))
    ((res = res * $1))
  return res
}

functions -M pow 2 2 my-powi

echo $((pow(4, 4) + 1))
# >> 257
zmath_cube() { (( $1 * $1 * $1 )) }
functions -M cube 1 1 zmath_cube
print $(( cube(3) ))