Làm thế nào để xác định hàm `bc` để sử dụng sau?


8

Tôi đã luôn luôn tìm thấy bcloại bí ẩn và hấp dẫn. Đó là một trong những chương trình Unix gốc. Và đó là một ngôn ngữ lập trình cho chính nó. Vì vậy, tôi sẵn sàng nắm lấy bất kỳ cơ hội nào tôi có thể tìm thấy để sử dụng nó.

Vì bc dường như không bao gồm chức năng giai thừa, tôi muốn định nghĩa một hàm như vậy:

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

}

Nhưng ... tôi không thể tái sử dụng nó, phải không?

Tôi muốn có thể làm một cái gì đó như

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

Câu trả lời:


11

Lưu định nghĩa hàm của bạn trong một tệp như thế factorial.bc, rồi chạy

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

Nếu bạn muốn chức năng giai thừa luôn tải khi bạn chạy bc, tôi khuyên bạn nên bọc bcnhị phân bằng tập lệnh shell hoặc hàm ( liệu tập lệnh hay hàm có tốt nhất hay không phụ thuộc vào cách bạn muốn sử dụng nó).

Script ( bc, để đưa vào ~/bin)

#!/bin/sh

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

Chức năng (để đặt trong tập tin shell shell)

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

Từ bcthông số kỹ thuật POSIX :

Nó sẽ lấy đầu vào từ bất kỳ tập tin nào, sau đó đọc từ đầu vào tiêu chuẩn.


Có lẽ bạn có thể gọi tệp .bcrc? Bạn có thể đặt nhiều định nghĩa trong cùng một tệp không?
Bernhard

Có, bạn có thể đặt bất kỳ cú pháp bc hợp lệ trong tệp. Những gì bạn gọi các tập tin và nơi bạn đặt nó là hoàn toàn tùy thuộc vào bạn.
jw013
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.