我有一个UniVerse(火箭U2)系统,并且希望能够从Shell脚本中调用某些UniVerse / TCL命令。但是,每当我运行uv
二进制文件时,它似乎都会停止执行其余的Shell脚本。
例如,如果我运行:
/u2/uv/bin/uv
它将启动UniVerse会话。脚本的下一行(RUNPY run_tests.py
)打算在TCL环境中执行,但绝不输入到TCL。我尝试将字符串参数传递给uv
二进制文件来执行,但似乎没有做任何事情。
是否可以从UNIX / Shell环境中调用UniVerse / TCL命令?
答案 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"