後で使用するために `bc`関数を定義する方法は?


8

いつもbc神秘的で興味をそそられるものを見つけました。これは元のUnixプログラムの1つでし。そしてそれはそれ自体がプログラミング言語です。だから、私はそれを使用するために見つけることができるどんなチャンスでも喜んで取ります。

bcには階乗関数が含まれていないようなので、次のように定義します。

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

}

でも……それでは再利用できませんね。

次のようなことができるようになりたいです

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

回答:


11

関数定義をなどのファイルに保存してfactorial.bc、実行します

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

を実行するときに階乗関数を常にロードする場合はbcbcバイナリをシェルスクリプトまたは関数でラップすることをお勧めします(スクリプトまたは関数が最適かどうかは、使用方法によって異なります)。

スクリプト(bc、入れる~/bin

#!/bin/sh

bc ~/factorial.bc << EOF
$@
EOF

関数(シェルrcファイルに入れる)

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

bcPOSIX仕様から:

指定されたファイルから入力を受け取り、標準入力から読み取ります。


たぶん、あなたはファイル.bcrcを呼び出すことができますか?同じファイルに複数の定義を入れることができますか?
Bernhard

はい、有効なbc構文をファイルに入れることができます。ファイルの名前と場所は完全にあなた次第です。
jw013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.