Bagaimana cara mendefinisikan fungsi `bc` untuk digunakan nanti?


8

Saya selalu menemukan bcjenis yang misterius dan menarik. Itu adalah salah satu yang program Unix original. Dan itu adalah bahasa pemrograman untuk dirinya sendiri. Jadi saya dengan senang hati mengambil kesempatan yang dapat saya temukan untuk menggunakannya.

Karena bc tampaknya tidak memasukkan fungsi faktorial, saya ingin mendefinisikan yang seperti ini:

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

}

Tapi ... kalau begitu aku tidak bisa menggunakan kembali itu, kan?

Saya ingin dapat melakukan sesuatu seperti

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

Jawaban:


11

Simpan definisi fungsi Anda dalam file seperti factorial.bc, dan kemudian jalankan

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

Jika Anda ingin fungsi faktorial selalu dimuat ketika Anda menjalankan bc, saya sarankan membungkus bcbiner dengan skrip atau fungsi shell ( apakah skrip atau fungsi yang terbaik tergantung pada bagaimana Anda ingin menggunakannya).

Script ( bc, untuk dimasukkan ~/bin)

#!/bin/sh

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

Fungsi (untuk memasukkan file rc shell)

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

Dari bcspesifikasi POSIX :

Itu harus mengambil input dari file yang diberikan, kemudian membaca dari input standar.


Mungkin Anda bisa memanggil file .bcrc? Bisakah Anda menaruh banyak definisi dalam file yang sama?
Bernhard

Ya, Anda dapat memasukkan sintaks bc yang valid dalam file. Apa yang Anda panggil file dan di mana Anda meletakkannya sepenuhnya terserah Anda.
jw013
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.