我有一个期望脚本,它检查远程服务器上是否存在文件,然后尝试打印(使用 cat)该文件(如果存在)
由于某种原因,期望脚本忽略了这些命令。
send "if {[file exists "./abc.test"]} {cat ./abc.txt\r}"
答案1
我从未使用过 Expect,但是您的代码示例……
if {[file exists "./abc.test"]} {send "cat ./abc.txt\r"}
...似乎检查了运行 expect 的机器上的文件是否存在,而不是远程机器上的文件是否存在。因此,除非脚本在远程服务器上运行,否则它将不起作用。
答案2
这是我所做的,现在它起作用了
cat /some/path/abc.txt 2> /dev/null
这样,如果文件存在,就会打印该文件,如果不存在,也不会抛出错误。
答案3
嗯,你做事的方式可能比较迂回。
首先,请描述一下你的背景:
- 您究竟如何(完整命令行)调用该脚本?
- 它如何访问远程服务器?您提供的脚本中没有远程访问。
最后,您真正想做什么?如果您想打印远程系统上的文件,直接调用 ssh 可能更容易。Expect 适用于没有脚本语言的脚本程序(例如简单的 ftp 客户端)。将它与命令 shell 一起使用会很复杂,因为命令 shell 已经具有强大的脚本语言。