2015-08-24 49 views
1

我对Progress仍然很陌​​生,并且对“Unix”命令有疑问。进度UNIX命令和变量行为

我有一个存储unix命令的数据库,在这种情况下,他们都是打印命令。我一直在撰写搜索表单来查找用户在过去几周打印的项目。在找到他们想要的项目后,用户应该能够重新打印该作业。它工作,直到我重新运行命令。

UNIX SILENT tCMD。

会在shell中逐字运行“tCMD”,而不是变量的值。也许我在这里错过了一些基本的东西,但我不确定为什么单独的Unix命令似乎没有工作,我喜欢它。

+0

我想我应该包括tCMD等于“lp -dp81 example.pdf”,或类似的东西。 – Hermano23

回答

2

尝试

UNIX SILENT VALUE(tCMD). 

一些背景:有些东西正在被硬编码,如文件名输入或输出,例如,或UNIX的价值命令(UNIX尝试LS,你会得到一个即使它不是一个变量或用引号括起来,结果仍然是解释者“知道”你想要做什么)。这是其中一例。正如我所说的,它也适用于输入/输出操作,例如INPUT FROM cMyFile。如果cMyFile是一个变量,那么我应该在代码

INPUT FROM VALUE(cMyFile). 
+0

谢谢,这就是我一直在寻找的!过去我实际上已经对一些unix命令进行了硬编码,但是我不知道你可以使用文件名来做到这一点。 – Hermano23

1

查找到OS-COMMAND语句而不是UNIX。它将帮助你编写更多可移植的代码(即使当然,发布给操作系统的实际命令也需要适合你的特定操作系统)。

也有一些建在最好使用(因为保持兼容的),而不是通过OS-COMMANDUNIXDOS发出命令的命令:

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). 
+0

如果您可以使用其中一个OS- *语句执行操作,那么该操作比操作系统的操作效率高得多。 –