2011-07-04 4 views
5

J'écris un script q qui charge un db dans un chemin particulier et y effectue un traitement. L'emplacement de la base de données est actuellement codé en dur dans le script, mais je veux passer le chemin db comme argument et le charger à partir du chemin dans la variable.Passer le chemin db vers l ou .Q.l en utilisant une variable

Actuellement, il ressemble à ceci:

je me suis dit que .Ql devrait nous laisser faire cela en utilisant une variable, donc j'ai essayé d'utiliser ce qui suit dans le script,

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

Lorsque en cours d'exécution avec argument/path/to/dbDir, le script échoue toujours avec des éléments illisibles et:

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

Quelqu'un pourrait-il m'aider?

Répondre

4

.Q.l est synonyme de \l qui ne prend qu'un seul argument, ce qui est un hsym mais un fichier ou un répertoire prénom.

Par ailleurs la substance illisible était la définition de fonction, suivie d'une erreur de type (comme il ne s'y attendait un hsym)

3

D'accord, il semble fonctionner quand nous essayons .Ql sans hsym comme ceci:

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

\x ... est toujours équivalent à system"x ...", qui est la solution générale au « comment passer je ne une variable à une question de commande \

dans votre cas, vous voulez

system"l ",.z.x 0 

(BTW, je ne pense pas .Q.l est impliqué dans \l de code, seulement des données, alors n'essayez pas de l'utiliser pour charger des fichiers .q supplémentaires)

Questions connexes