Sharjeel Asked: 2009-08-06 23:37:58 +0800 CST2009-08-06 23:37:58 +0800 CST 2009-08-06 23:37:58 +0800 CST Expect 脚本不打印(cat)远程服务器上的文件 772 我有一个期望脚本,它检查远程服务器上是否存在文件,然后尝试打印(使用 cat)它,如果它存在 由于某种原因,expect 脚本会忽略这些命令。 send "if {[file exists "./abc.test"]} {cat ./abc.txt\r}" linux unix bash tcl 3 个回答 Voted user1686 2009-08-07T10:51:01+08:002009-08-07T10:51:01+08:00 我从未使用过Expect,但是您的代码示例... if {[file exists "./abc.test"]} {send "cat ./abc.txt\r"} ...似乎在运行期望的机器上检查文件是否存在,而不是在远程机器上。因此,除非脚本在远程服务器上运行,否则它将无法工作。 Best Answer Sharjeel 2009-08-12T02:21:45+08:002009-08-12T02:21:45+08:00 这是我所做的,现在有效 cat /some/path/abc.txt 2> /dev/null 这样,如果文件存在,则打印该文件,如果不存在,则不会引发错误。 sleske 2009-08-07T00:09:41+08:002009-08-07T00:09:41+08:00 嗯,你可能正在以一种相当迂回的方式做事。 首先,请描述您的背景: 您究竟如何(完整的命令行)调用此脚本? 它如何访问远程服务器?您提供的脚本中没有远程访问。 最后,你真正想要做什么?如果要在远程系统上打印文件,直接调用 ssh 可能更容易。Expect 适用于没有脚本语言的脚本程序(例如简单的 ftp 客户端)。将它与已经具有强大脚本语言的命令 shell 一起使用是不必要的复杂。
我从未使用过Expect,但是您的代码示例...
...似乎在运行期望的机器上检查文件是否存在,而不是在远程机器上。因此,除非脚本在远程服务器上运行,否则它将无法工作。
这是我所做的,现在有效
这样,如果文件存在,则打印该文件,如果不存在,则不会引发错误。
嗯,你可能正在以一种相当迂回的方式做事。
首先,请描述您的背景:
最后,你真正想要做什么?如果要在远程系统上打印文件,直接调用 ssh 可能更容易。Expect 适用于没有脚本语言的脚本程序(例如简单的 ftp 客户端)。将它与已经具有强大脚本语言的命令 shell 一起使用是不必要的复杂。