我的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”,但不起作用。
有人有任何建议或提示吗?非常感谢。
最佳答案
您是否检查过 How to store a result to a variable in HP OpenVMS DCL? 中是否接受了答案对这个问题有帮助吗?
管道中的 DEFINE 命令是 DEFINE/JOB RET_VALUE abc
,通过 DCL 更改为 DEFINE/JOB RET_VALUE ABC
。当引用等效名称(即 DEFINE/JOB RET_VALUE "abc"
)时,DCL 不会更改为大写。但是,当您编写 "@SYS$PIPE"
时,您将使用字符串 @SYS$PIPE
作为等效名称。换句话说,在字符串中,重定向器 @
不再起作用。因此,您必须按原样从 SYS$PIPE 获取字符串,例如使用 READ 获取字符串,如链接答案中所示。
PS:...您可能希望从管道命令中的 test.exe
中删除 .exe
。
关于openvms - 如何在 HP openVMS DCL 中启用区分大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36595532/