2015-08-24 77 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- *語句執行操作,那麼該操作比操作系統的操作效率高得多。 –