1

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

$ x = perl p.pl ! not working code
$ ! now x would be 5
4

3 回答 3

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”,因此您必须小心副作用。

于 2010-12-14T01:59:32.780 回答
0

查找 PIPE 命令。它可以让你做类似 Unix 的事情。

于 2010-12-14T01:19:31.440 回答
0

我想从文件的 ACL 中识别特定的 ACE,然后将值分配给我稍后可以在脚本中引用的变量。我想避免写入/读取文件的开销,因为我有 1000 个文件要迭代。这种方法对我有用。

$ PIPE DIR/SEC 文件名 | 搜索 SYS$PIPE 变量 | (READ SYS$PIPE 变量 && DEFINE/JOB/NOLOG 变量 &variable)

$ 显示逻辑变量

于 2019-12-11T07:43:10.640 回答