Progress UNIX 命令和变量行为
Progress UNIX Command and Variable Behavior
我对 Progress 还是个新手,我对 "Unix" 命令有疑问。
我有一个存储了 unix 命令的数据库,在本例中它们都是打印命令。我一直在写一个搜索表单来查找用户在过去几周打印的项目。找到他们想要的项目后,用户应该能够重新打印作业。它有效,直到我重新运行命令。
UNIX 静默 tCMD。
会按字面意思运行 "tCMD"中的shell,而不是变量的值。也许我在这里遗漏了一些基本的东西,但我不确定为什么单独使用 Unix 命令似乎无法按我希望的方式工作。
尝试
UNIX SILENT VALUE(tCMD).
一些上下文:有些事情可以在进行中进行硬编码,例如要输出或输入的文件名,或者 unix 命令的值(试试 UNIX ls,你会得到一个 ls 结果,即使它不是一个变量或用引号括起来。仍然是解释器 "knows" 你想做什么)。这是其中一个案例。正如我所说,它也适用于 input/output 操作,例如 INPUT FROM cMyFile。如果 cMyFile 是一个变量,那么我应该编码
INPUT FROM VALUE(cMyFile).
查看 OS-COMMAND
语句而不是 UNIX
。它将帮助您编写更可移植的代码(即使向操作系统发出的实际命令当然需要适合您的特定 os)。
还有一些内置命令更好用(因为兼容性),而不是通过 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
函数,它将 return 您当前使用的操作系统。
因此,如果您想将命令存储在变量中,请使用 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).
我对 Progress 还是个新手,我对 "Unix" 命令有疑问。
我有一个存储了 unix 命令的数据库,在本例中它们都是打印命令。我一直在写一个搜索表单来查找用户在过去几周打印的项目。找到他们想要的项目后,用户应该能够重新打印作业。它有效,直到我重新运行命令。
UNIX 静默 tCMD。
会按字面意思运行 "tCMD"中的shell,而不是变量的值。也许我在这里遗漏了一些基本的东西,但我不确定为什么单独使用 Unix 命令似乎无法按我希望的方式工作。
尝试
UNIX SILENT VALUE(tCMD).
一些上下文:有些事情可以在进行中进行硬编码,例如要输出或输入的文件名,或者 unix 命令的值(试试 UNIX ls,你会得到一个 ls 结果,即使它不是一个变量或用引号括起来。仍然是解释器 "knows" 你想做什么)。这是其中一个案例。正如我所说,它也适用于 input/output 操作,例如 INPUT FROM cMyFile。如果 cMyFile 是一个变量,那么我应该编码
INPUT FROM VALUE(cMyFile).
查看 OS-COMMAND
语句而不是 UNIX
。它将帮助您编写更可移植的代码(即使向操作系统发出的实际命令当然需要适合您的特定 os)。
还有一些内置命令更好用(因为兼容性),而不是通过 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
函数,它将 return 您当前使用的操作系统。
因此,如果您想将命令存储在变量中,请使用 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).