期望脚本 + 在期望脚本中写入“if”

期望脚本 + 在期望脚本中写入“if”

请指教我的 exepct 语法有什么问题(我在 Solaris 10 机器上的 ksh 脚本中运行 expect)

我想验证操作系统是否是 Linux

如果为真,则期望检查提示是否为“#”或“>”

然后运行“ls”命令

但我得到下面的错误,请建议可能是什么问题

     OS=solaris

     expect_do_something=`cat << EOF
     set timeout -1
     spawn   telnet 0 $IP_ADDRESS
     expect login:           {send $LOGIN\r}
     expect Password:        {send "$PASS\r"}




 if { "$OS" == "solaris" }
    {
      expect -re {#|>}        {send ls\r}
    }

 expect eof
 EOF`

 expect -c  "$expect_do_something"

预期的错误:

  wrong # args: no script following " "solaris" == "solaris" " argument
     while executing
  "if { "solaris" == "solaris" }"

答案1

Expect 作为 Tcl 的扩展,必须尊重 Tcl 的语法规则很少在 Tcl 中,换行符表示命令的结束(参见这条规则), 那么你必须将 if-body 的开括号放在同一行。

if { "$OS" == "solaris" } {
  # ......................^
  expect -re {#|>} {send ls\r}
}

相关内容