Shell

如何定義一個 bc 函式以供以後使用?

  • August 1, 2021

我總是覺得bc有點神秘和有趣。它是最初Unix 程序之一。它本身就是一種程式語言。所以我很樂意抓住任何我能找到的機會來使用它。

由於 bc 似乎不包含階乘函式,我想定義一個像這樣:

define fact(x) {
 if (x>1) {
   return (x * fact(x-1))
 }
 return (1)

}

但是…我不能再重複使用它,可以嗎?

我希望能夠做類似的事情

me@home$ bc <<< "1/fact(937)"

將您的函式定義保存在一個類似的文件factorial.bc中,然後執行

bc factorial.bc <<< '1/fact(937)'

如果您希望在執行時始終載入階乘函式bc,我建議bc使用 shell 腳本或函式包裝二進製文件(腳本或函式是否最好取決於您要如何使用它)。

腳本 ( bc, 放入~/bin)

#!/bin/sh

/usr/bin/bc ~/factorial.bc << EOF
$*
EOF

函式(放入 shell rc 文件)

bc () {
   command bc ~/factorial.bc << EOF
$*
EOF
}

bcPOSIX 規範

它應該從給定的任何文件中獲取輸入,然後從標準輸入中讀取。

引用自:https://unix.stackexchange.com/questions/41957