【发布时间】:2021-03-29 08:31:35
【问题描述】:
bash 编程新手,
以下期望脚本 ssh 进入服务器,但在尝试发送该命令时出现无效命令名称错误。此外,即使“if”命令有效,也是一个次要问题,以下期望行将从命令本身获取“失败”或“通过”而不是等待结果 - 我如何让它等待适当的结果.
send "if [[ $(hostname -s) == $hostname ]] ; then echo pass ; else echo fail ; fi ; \r"
expect {
"fail" {
send -- "echo failed\r"
}
"pass" {
send -- "echo success\r"
}
}
感谢大家的帮助!
【问题讨论】:
-
什么是目标用户?
-
哪个'if'命令有效?
-
哪个是无效的命令名?
-
或许
expect { "fail\r" …解决了次要问题。 -
写期望你必须先学习Tcl。例如
[ ... ]、$(hostname -s)和$hostname在 Tcl 中都有特殊的含义。如果您对 shell 语法更熟悉,可以试试我的sexpect。