我对Progress仍然很陌生,并且对“Unix”命令有疑问。进度UNIX命令和变量行为
我有一个存储unix命令的数据库,在这种情况下,他们都是打印命令。我一直在撰写搜索表单来查找用户在过去几周打印的项目。在找到他们想要的项目后,用户应该能够重新打印该作业。它工作,直到我重新运行命令。
UNIX SILENT tCMD。
会在shell中逐字运行“tCMD”,而不是变量的值。也许我在这里错过了一些基本的东西,但我不确定为什么单独的Unix命令似乎没有工作,我喜欢它。
我对Progress仍然很陌生,并且对“Unix”命令有疑问。进度UNIX命令和变量行为
我有一个存储unix命令的数据库,在这种情况下,他们都是打印命令。我一直在撰写搜索表单来查找用户在过去几周打印的项目。在找到他们想要的项目后,用户应该能够重新打印该作业。它工作,直到我重新运行命令。
UNIX SILENT tCMD。
会在shell中逐字运行“tCMD”,而不是变量的值。也许我在这里错过了一些基本的东西,但我不确定为什么单独的Unix命令似乎没有工作,我喜欢它。
尝试
UNIX SILENT VALUE(tCMD).
一些背景:有些东西正在被硬编码,如文件名输入或输出,例如,或UNIX的价值命令(UNIX尝试LS,你会得到一个即使它不是一个变量或用引号括起来,结果仍然是解释者“知道”你想要做什么)。这是其中一例。正如我所说的,它也适用于输入/输出操作,例如INPUT FROM cMyFile。如果cMyFile是一个变量,那么我应该在代码
INPUT FROM VALUE(cMyFile).
谢谢,这就是我一直在寻找的!过去我实际上已经对一些unix命令进行了硬编码,但是我不知道你可以使用文件名来做到这一点。 – Hermano23
查找到OS-COMMAND
语句而不是UNIX
。它将帮助你编写更多可移植的代码(即使当然,发布给操作系统的实际命令也需要适合你的特定操作系统)。
也有一些建在最好使用(因为保持兼容的),而不是通过OS-COMMAND
,UNIX
或DOS
发出命令的命令:
To copy a file:
OS-COPY source target
To delete a file:
OS-DELETE file
To rename a file:
OS-RENAME source target
To append a file with another (ie cat):
OS-APPEND source target
To create a directory:
OS-CREATE-DIR directory
To delete a file or directory:
OS-DELETE file [RECURSIVE]
To get an environment variable
OS-GETENV variable
To list attached drives (windows only):
OS-DRIVES
To list files in a directory you should do:
INPUT FROM OS-DIR directory.
If an error occurs in an OS-* command you can use OS-ERROR to check for the
error.
一般的文件和目录,并命令在这些语句可以解决与
file.txt
或
VALUE("file.txt").
还可以查看OPSYS
函数,该函数将返回您当前所在的操作系统。
所以,如果你想在一个变量中存储一个命令,你可以使用VALUE。我总是使用VALUE,因为我认为它更具可读性。
DEFINE VARIABLE cCommand AS CHARACTER NO-UNDO.
IF OPSYS = "UNIX" THEN
ASSIGN
cCommand = "ls -l".
ELSE
ASSIGN
cCommand = "dir".
OS-COMMAND VALUE(cCommand).
如果您可以使用其中一个OS- *语句执行操作,那么该操作比操作系统的操作效率高得多。 –
我想我应该包括tCMD等于“lp -dp81 example.pdf”,或类似的东西。 – Hermano23