例如,我有一个perl脚本p.pl,它将“5”写入stdout。我想将输出分配给变量,如下所示:
$ x = perl p.pl ! not working code
$ ! now x would be 5
答案 0 :(得分:3)
PIPE命令允许你进行Unix-ish流水线操作,但DCL不是bash。获取分配给符号的输出很棘手。每个PIPE段都在一个单独的子进程(如Unix)中运行,并且无法从子进程返回符号。 AFAIK,没有bash相当于将stdout赋值给变量。
典型的方法是将输出写入(重定向)到文件,然后将其读回:
$ PIPE perl p.pl > temp.txt
$ open t temp.txt
$ read t x
$ close t
另一种方法是将返回值指定为由所有子进程共享的JOB逻辑。这可以使用PIPE作为单行完成:
$ PIPE perl p.pl | DEFINE/JOB RET_VALUE @SYS$PIPE
$ x = f$logical("RET_VALUE")
由于“RET_VALUE”由作业中的所有进程共享,因此必须注意副作用。
答案 1 :(得分:0)
查找PIPE命令。它可以让你像unix一样进行unix。
答案 2 :(得分:0)
我想从文件的ACL中标识一个特定的ACE,然后将该值分配给一个我稍后在脚本中引用的变量。我想避免写入文件或从文件读取的开销,因为我要迭代1000个文件。这种方法对我有用。
$ PIPE DIR / SEC文件名| SEARCH SYS $ PIPE变量| (读取SYS $ PIPE变量&& DEFINE / JOB / NOLOG变量&variable)
$ SHOW LOGICAL变量