2010-12-13 2 views

Répondre

3

La commande PIPE vous permet de faire un pipeline Unix-ish, mais DCL n'est pas bash. Obtenir la sortie assignée à un symbole est difficile. Chaque segment PIPE s'exécute dans un sous-processus séparé (comme Unix) et il n'y a aucun moyen de renvoyer un symbole d'un sous-processus. AFAIK, il n'y a pas d'équivalent bash d'assignation de stdout à une variable.

L'approche typique est d'écrire (redirection) la sortie vers un fichier, puis le relire:

$ PIPE perl p.pl > temp.txt 
$ open t temp.txt 
$ read t x 
$ close t 

Une autre approche consiste à attribuer la valeur de retour comme un travail logique qui est partagée par tous les sous-processus. Cela peut être fait comme une doublure en utilisant PIPE:

$ PIPE perl p.pl | DEFINE/JOB RET_VALUE @SYS$PIPE 
$ x = f$logical("RET_VALUE") 

Depuis le « RET_VALUE » est partagée par tous les processus du travail, vous devez être prudent d'effets secondaires.

+0

Merci, votre deuxième approche est ce que je cherchais. Quelque chose d'un peu mieux que d'utiliser des fichiers. – Jason

0

Recherchez la commande PIPE. Il vous permet de faire unix comme des choses.

Questions connexes