Передача пути db в \ l или .Q.l с помощью переменной - PullRequest
4 голосов
/ 04 июля 2011

Я пишу скрипт q, который загружает БД по определенному пути и выполняет некоторую обработку по нему. Расположение базы данных в настоящее время жестко задано в сценарии, но я хочу передать путь базы данных в качестве аргумента и загрузить его из пути в переменной.

В настоящее время это выглядит так:

q) \l /path/to/dbDir        #Works

Я понял, что .Q.l должен позволить нам сделать это с помощью переменной, поэтому я попытался использовать в скрипте следующее:

dbPath:`$.z.x 0
.Q.l hsym dbPath            #Fails

При запуске с аргументом / path / to / dbDir скрипт всегда завершается с некоторыми нечитаемыми вещами и:

':/path/to/dbDir: No such file or directory

Может ли кто-нибудь помочь, пожалуйста?

Ответы [ 3 ]

5 голосов
/ 23 марта 2012

\x ... всегда эквивалентно system"x ...", что является общим решением «как передать переменную в \ командный вопрос

, в вашем случае вы хотите

system"l ",.z.x 0

(кстати, я не думаю, что .Q.l участвует в \l кода, только в данных, поэтому не пытайтесь использовать его для загрузки дополнительных файлов .q)

4 голосов
/ 12 июля 2011

.Ql является синонимом \ l , который принимает только один аргумент, который является не hsym, а именем файла или каталога.

Кстати, нечитаемыйвещи - это определение функции, за которым следует ошибка типа (поскольку он не ожидал hsym)

2 голосов
/ 06 июля 2011

Хорошо, похоже, работает, когда мы пытаемся .Ql без hsym, как это:

dbPath:`$.z.x 0
.Q.l dbPath
...