2014-11-09 2 views
0

Я новичок в SBCL, и я пытаюсь запустить скрипты Lisp, хранящиеся в текстовых файлах с терминала bash.SBCL: работает от bash и уходит обратно в bash

Это то, что я пишу в начале файла, как ссылки на http://www.sbcl.org/manual/#Running-from-Shell

#!/usr/local/bin/sbcl --script 
(write-line "Hello, World!") 

Это так, как я запустить его с Баш терминала:

$ ./hello.lisp 
Hello, World! 

Проблема в том, что сценарий заканчивается после bash после его выполнения. Я хотел бы, чтобы сценарий не возвращался к bash, но для сохранения sbcl interpreter работает (чтобы иметь возможность использовать предопределенные функции для целей тестирования). Есть ли простой способ сделать это?

ответ

0

Использовать --eval или -e вариант.

sbcl --eval '(write-line "Hello, World!")', он будет определять ваш код и держать вас внутри REPL.

+0

Спасибо, но каков был бы способ сделать это внутри текстового файла (собственно сценарий)? Замена «-script» на «--eval» в «#!/Usr/local/bin/sbcl -script» не работает. – user1326050

+0

Вам необходимо передать текст в качестве аргумента опции -e, например, обернуть его внутри кавычек или что-то в этом роде. Но похоже, что вы делаете что-то вроде SBCL. Почему бы не поместить весь ваш код lisp в .lisp-файл и просто '(загрузить «myfile.lisp») 'из SBCL? Каков ваш полный вариант использования? – coredump

+0

Я хотел бы определить новую функцию в «myfile.lisp». Позже я хочу использовать эту функцию в ** SBCL **. Если я попробую '(load" myfile.lisp ")' он всегда оценивает как ** T **, и я не могу использовать функцию, определенную в этом файле. Содержимое ** myfile.lisp ** равно: '(defun sumgr (x y z) (> (+ x y) z))'. Ошибка SBCL показывает: ** отладчик, вызываемый в UNBOUND-VARIABLE: переменная SUMGR не связана. ** – user1326050

 Смежные вопросы

  • Нет связанных вопросов^_^