从Shell调用UniVerse命令

时间:2019-07-12 13:54:18

标签: shell universe u2

我有一个UniVerse(火箭U2)系统,并且希望能够从Shell脚本中调用某些UniVerse / TCL命令。但是,每当我运行uv二进制文件时,它似乎都会停止执行其余的Shell脚本。

例如,如果我运行: /u2/uv/bin/uv

它将启动UniVerse会话。脚本的下一行(RUNPY run_tests.py)打算在TCL环境中执行,但绝不输入到TCL。我尝试将字符串参数传递给uv二进制文件来执行,但似乎没有做任何事情。

是否可以从UNIX / Shell环境中调用UniVerse / TCL命令?

3 个答案:

答案 0 :(得分:2)

您可以手动键入或将其放入Shell脚本中。我没有遇到有关此范例的任何问题,但您从shell的选择理论上可能会对此产生影响。您当然希望位于要在其中执行帐户的目录中,或者在脚本中通过cd进入该帐户。

/u2/uv/bin/uv <<start
RUNPY run_tests.py
start

祝你好运。

答案 1 :(得分:1)

要提防的一件事是,如果您有一个LOGIN段落或其他可以自动运行以启动您的应用程序(这确实很常见),那么您需要找到一种方法来为非交互用户绕过它。 / p>

https://groups.google.com/forum/#!topic/comp.databases.pick/B2hzuXq3X9A提及

IF OCONV(@TTY,'MCU')='PHANTOM' THEN ABORT

在UD中,我以幻像的形式从unix启动脚本,以a)捕获PH中的日志输出,b)如果需要额外的输入,则结束该过程,而不是闲逛。在UD中是

$echo "PHANTOM COUNT VOC" | udt
UniData Release 8.1  Build: (2008)
Current UniData home is /unidata/ud81/.
Current working directory is /usr/ud81/demo

:PHANTOM COUNT VOC
PHANTOM process 18743448 started.
COMO file is '_PH_/dsiroot45172_18743448'.
:
Critical abort condition found.

$cat _PH_/dsiroot45172_18743448
COUNT VOC
14670 record(s) counted.
PHANTOM process 18743448 has completed.

答案 2 :(得分:0)

Van Amburg's answer是处理多行输入的最正确方法。我使用的变体代替了多行字符串的<<命令,我只是在单个命令周围添加了引号(单引号和双引号都起作用):

/u2/uv/bin/uv "RUNPY run_tests.py"