私はいつもbc
それがやや不思議で面白いと思いました。これはその一つです。これオリジナルのUNIXプログラム。それ自体がプログラミング言語です。だから私はそれを使う機会があることを嬉しく思います。bc
階乗関数が含まれていないようで、次のように定義したいと思います。
define fact(x) {
if (x>1) {
return (x * fact(x-1))
}
return (1)
}
しかし...再利用することはできませんか?私は次のことができるようにしたいと思います。
me@home$ bc <<< "1/fact(937)"
答え1
このようなファイルに関数定義を保存してfactorial.bc
実行します。
bc factorial.bc <<< '1/fact(937)'
bc
継承関数が実行時に常にロードされるようにするには、bc
シェルスクリプトまたは関数ラッパーバイナリ(スクリプトや関数が一番いいですか?どのように使用するかによって異なります。)
スクリプト(bc
、入れる~/bin
)
#!/bin/sh
/usr/bin/bc ~/factorial.bc << EOF
$*
EOF
機能(シェルrcファイルに入れる)
bc () {
command bc ~/factorial.bc << EOF
$*
EOF
}
~からbc
POSIX仕様:
指定されたファイルから入力を受け取り、標準入力から読み込みます。
答え2
シェルラッパー関数を作成するよりも少し優れているのは、環境変数にbc
GNUのデフォルトパラメータを指定できることです。bc
したがって、設定ファイル.bcrc
または他のものをホームディレクトリに配置し、
export BC_ENV_ARGS="$HOME/.bcrc "
~からGNUbc
マニュアル:
BC_ENV_ARGS
This is another mechanism to get arguments to bc. The format is the same
as the command line arguments. These arguments are processed first, so
any files listed in the environment arguments are processed before any
command line argument files. This allows the user to set up "standard"
options and files to be processed at every invocation of bc. The files
in the environment variables would typically contain function
definitions for functions the user wants defined every time bc is run.