我有一个UniVerse (Rocket U2)系统,并且希望能够从shell脚本调用某些宇宙/TCL命令。然而,每当我运行uv二进制文件时,它似乎都会停止执行shell脚本的其余部分。
例如,如果我运行:/u2/uv/bin/uv
它启动一个UniVerse会话。脚本的下一行(RUNPY run_tests.py)将在TCL环境中执行,但从未输入到TCL。我尝试将字符串参数传递给要执行的uv二进制文件,但似乎没有做任何事情。
有方法从UNIX/Shell环境调用UNIX/TCL命令吗?
发布于 2019-07-12 17:17:55
您可以手动键入此类型,或将其放入shell脚本中。我没有遇到任何关于这个范例的问题,但是你对外壳的选择理论上可能会影响到这一点。您当然希望在您要在其中执行的帐户的目录中,或者在脚本中对其进行cd处理。
/u2/uv/bin/uv <<start
RUNPY run_tests.py
start祝好运。
发布于 2019-07-12 17:37:14
需要注意的一件事是,如果您有一个登录段或其他自动运行以启动应用程序的内容(这是非常常见的),那么您需要为非交互式用户找到一种绕过此操作的方法。
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.发布于 2019-07-12 17:59:39
Van Amburg's answer是处理多行输入的最正确方法。我使用的变体代替了用于多行字符串的<<命令,我只是在一个命令周围添加了引号(单引号和双引号都有效):
/u2/uv/bin/uv "RUNPY run_tests.py"
https://stackoverflow.com/questions/57008427
复制相似问题