2

我的 DCL 如下(TEST.EXE 只打印输入)

$ DEFINE DCL$PATH SYS$DISK:[],SYS$LOGIN:,SYS$SYSTEM:
$ PIPE TEST.EXE abc | DEFINE/JOB RET_VALUE @SYS$PIPE
$ x = f$logical("RET_VALUE")
$ WRITE SYS$OUTPUT x

我想让这个 DCL 显示结果是“abc”。但是这个 DCL 结果将显示“ABC”。

我尝试在 DCL 中添加“SET PROCESS/CASE_LOOKUP=SENSITIVE”,但不可行。

有没有人有任何建议或提示?非常感谢。

4

1 回答 1

3

您是否检查了 如何将结果存储到 HP OpenVMS DCL 中的变量中的已接受答案?对这个问题有帮助吗?

您在管道中的 DEFINE 命令是DEFINE/JOB RET_VALUE abc,DCL 将其更改为 DEFINE/JOB RET_VALUE ABC。当引用等价名称时,DCL 不会更改为大写,这将是DEFINE/JOB RET_VALUE "abc". 但是,当您编写 时"@SYS$PIPE",您将字符串@SYS$PIPE作为等价名称。换句话说,在字符串中重定向器@不再起作用。因此,您必须按原样获取字符串SYS$PIPE,例如使用 a READ,如链接答案中所示。

PS:...您可能希望在您的管道命令中删除.exefrom 。test.exe

于 2016-04-13T16:30:33.553 回答