例如,我有一个perl脚本p.pl,将“ 5”写入stdout。我想将该输出分配给类似的变量:

$ x = perl p.pl ! not working code
$ ! now x would be 5
有帮助吗?

解决方案

管道命令允许您进行Unix-ish Pipeelining,但DCL不是bash。将输出分配给符号很棘手。每个管段均在单独的子过程中运行(例如UNIX),无法从子进程中返回符号。 afaik,没有将Stdout分配给变量的bash。

典型的方法是将输出编写(重定向)到文件,然后将其读回:

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

另一种方法是将返回值分配为作业逻辑,所有子过程共享。这可以用管道作为单线操作:

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

由于作业中的所有过程都共享“ ret_value”,因此您必须小心副作用。

其他提示

查找管道命令。它使您可以做喜欢的事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top