2011-07-04 6 views
5

Tôi đang viết một tập lệnh q tải một db trong một đường dẫn cụ thể và thực hiện một số thao tác trên đó. Vị trí của db hiện đang được mã hóa cứng trong tập lệnh, nhưng tôi muốn chuyển đường dẫn db làm đối số và làm cho nó tải từ đường dẫn trong biến.Chuyển đường dẫn db tới l hoặc .Q.l bằng biến số

Hiện nay nó trông như thế này:

tôi đã tìm ra rằng .Ql nên chúng ta hãy làm điều này bằng cách sử dụng biến, vì vậy tôi cố gắng sử dụng những điều sau đây trong kịch bản,

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

Khi chạy với lập luận/path/to/dbDir, kịch bản luôn luôn thất bại với một số công cụ đọc và:

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

Ai đó có thể giúp bạn?

Trả lời

4

.Q.l đồng nghĩa với \l mà chỉ mất một đối số duy nhất, mà không phải là một hsym nhưng một tập tin hoặc thư mục Tên.

Ngẫu nhiên những thứ không thể đọc được là định nghĩa hàm, tiếp theo là một lỗi loại (như nó đã không mong đợi một hsym)

3

Được rồi, có vẻ như để làm việc khi chúng tôi cố gắng .Ql mà không hsym như thế này:

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

\x ... luôn tương đương với system"x ...", đó là giải pháp chung để "làm thế nào để vượt qua một biến cho một câu hỏi \ lệnh

trong trường hợp của bạn, bạn muốn

system"l ",.z.x 0 

(btw, tôi không nghĩ .Q.l được tham gia vào \l mã, chỉ dữ liệu, vì vậy đừng cố gắng sử dụng nó để tải thêm tệp .q)