Cómo asignar la salida de un programa a una variable en un script com DCL en VMS?

StackOverflow https://stackoverflow.com/questions/4431757

  •  09-10-2019
  •  | 
  •  

Pregunta

Por ejemplo, tengo una p.pl script en Perl que escribe "5" en la salida estándar. Me gustaría asignar esa salida a una variable de esta manera:

$ x = perl p.pl ! not working code
$ ! now x would be 5
¿Fue útil?

Solución

El comando TUBO le permite hacer la canalización Unix-ish, pero DCL no es bash. Conseguir la salida asignada a un símbolo es complicado. Cada segmento de tubería se ejecuta en un subproceso independiente (como Unix) y no hay manera de volver un símbolo de un subproceso. Que yo sepa, no hay fiesta equivalente a la asignación de la salida estándar a una variable.

El enfoque típico es escribir (redirección) la salida a un archivo y luego leer de nuevo:

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

Otro enfoque consiste en asignar el valor devuelto como un trabajo lógico que es compartida por todos los subprocesos. Esto se puede hacer como un uso de TUBO de una sola línea:

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

Como el "RET_VALUE" es compartida por todos los procesos en el trabajo, usted tiene que tener cuidado de los efectos secundarios.

Otros consejos

Busque el comando PIPE. Te permite hacer cosas como UNIX.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top