我想在shell脚本上对Intersystem缓存执行一些命令。我知道的一个解决方案是通过制作配置文件,但问题是我不知道如何通过shell脚本使用配置文件。对此还有其他解决方案......
例如我必须在缓存上运行
csession instancename
zn "area"
area>D ^%RI
Device:some/device/path
Next: It should take enter
答案 0 :(得分:1)
这可以从Linux shell完成,只需记录您需要执行的命令,然后将它们放入脚本中。这是一个登录到Cache并编写“Hello world”的示例 - 请注意,这也假设您需要进行身份验证。
echo -e "username\npassword\nW \"Hello world\"\nH\n" | csession instance
请注意,您手动运行的每个命令都在那里,并以“\ n”分隔,这是代表“Enter”键的字符。
答案 1 :(得分:0)
可以(对于某些操作系统)以批处理模式运行Cache终端。例如:
echo: off
wait for:Username
send: SYS<CR>
wait for:Password
send: XXX<CR>
echo: on
logfile: Somepath\myFile.log
send: ZN "AREA"
wait for:AREA>
send: D ^%RI
wait for:Device:
send: some/device/path
wait for:Next:
send: <CR>
the Intersystems cache terminal documentation中记录了这一点,特别是the using terminal in batch mode section和the terminal scripts section。
答案 2 :(得分:0)
这是一个非常老的问题..当我遇到相同的问题时,因此通过少量的研发,我找到了解决该问题的方法。这很酷很简单。
假设我有此文件(每个命令的扩展名都可以位于单独的行中)
zn "%SYS"
for e="a","b","c" { w e,! }
因此,如果是UNIX,则将其传递到缓存终端是通过Linux PIPE(|)运算符使用csession
cat myScript.scr | csession {instance_name}
cat myScript.scr | csession CACHE
a
b
c
• Don't separate a command in multiple lines else `csession` will through <SYNTAX> error. (See how I wrote the *for* loop)
• Extra knowledge - Intersystem Ensemble supports *Cache Terminal Batch Mode* in Windows case... While in linux there is no cterm to take the scripts..
• But linux gives you a work around to do this ;).
希望这对你们有帮助!!欢呼声:D