Как определить функцию `bc` для последующего использования?

Я всегда считал bc таинственным и интригующим. Это была одна из оригинальных программ Unix. И это язык программирования для себя. Поэтому я с радостью беру любой шанс найти его.

Поскольку bc, похоже, не включает факториальную функцию, я хочу определить ее так:

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

Но … Я не могу повторить это, не так ли?

Я бы хотел сделать что-то вроде

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

One Solution collect form web for “Как определить функцию `bc` для последующего использования?”

Сохраните определения функций в файле, например factorial.bc , а затем запустите

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

Если вы хотите, чтобы факториальная функция всегда загружалась при запуске bc , я бы предложил обернуть двоичный код bc скриптом или функцией оболочки ( лучше всего зависит от того , какой сценарий или функция зависит от того, как вы хотите его использовать).

Сценарий ( bc , чтобы положить ~/bin )

 #!/bin/sh bc ~/factorial.bc << EOF $@ EOF 

Функция (для вставки файла оболочки rc)

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

Из спецификаций bc POSIX :

Он должен принимать данные от любых файлов, а затем читать со стандартного ввода.

  • Как рассчитать% успешных запросов
  • BC возвращает синтаксическую ошибку
  • bc удаляет десятичную точку
  • bc выводит двоичный код, как куски, разделенные пробелами
  • Автоматическое преобразование новых строк в присвоении переменной оболочки
  • Почему bc выходит 0 при делении на 0?
  • Сложность преобразования из двоичного в шестнадцатеричное с использованием bc
  • Выполнение простой математики в командной строке с использованием функций bash: $ 1, деленная на $ 2 (используя, возможно, bc)
  • Выполнение арифметики с плавающей запятой в определениях переменных сценария оболочки
  • Невозможно суммировать числа, полученные от stdin, используя bc
  • использовать переменную цикла цикла для вычисления bash
  • Interesting Posts

    Как настроить сочетание клавиш, которое входит в предопределенный текст в X11 xterminal через SSH из Mac OS?

    Как я могу использовать свой сервер для компиляции ядра для моего ноутбука?

    Как заменить строку на точное совпадение строки

    Процесс зомби нельзя удалить или убить

    Отладка cuda nvidia driver crashiness

    Почему \ 033 сработает для таких варов, как PS1 и \ x1b, нет?

    Imagemagick «конвертировать» текст в изображение: ReadTEXTImage: Assertion

    удалить символ возврата каретки из большого двоичного файла

    Не удается установить параметр «-o remount» на общем ресурсе NFS для работы в Slackware 13.1

    Скомпилируйте все файлы tex в каталоге

    rngd – несколько экземпляров из сценария init

    Какое правильное разрешение файла для файла .pem для SSH и SCP

    Удалить префикс из заголовка объекта в индексном представлении

    Почему заголовки ядра Linux содержат ссылки на несуществующие заголовки?

    Заполнение вкладки Bash происходит не в подстановке команд

    Linux и Unix - лучшая ОС в мире.