期望发送命令没有回显

时间:2015-12-13 09:38:48

标签: expect

获得了我希望处理的许可协议。 我有以下代码

{
  /usr/bin/expect << EOD
  log_user 0
  set timeout 20
  spawn -noecho "${filename}" > /dev/null 2>&1

  stty -echo;
  expect {
      "Press Enter to view the End User License Agreement" {
          send "\r"
          exp_continue
      }
      "More" {
          send " "
          exp_continue
      }
      "Do you accept the End User License Agreement?" {
          log_user 0
          send "y\r"
          log_user 0
      }
  }
  interact
  expect eof
EOD
}

运行这个我得到以下输出:

y

它工作正常,但我希望从期望中得不到任何输出。 我的目标是不回应send命令。 正如您所看到的,我已经尝试使用log_userstty来完成此操作,但没有运气。 在代码中使用这些额外的位之前,我可以在屏幕上看到整个许可文本。使用log_user 0,现在不再显示了。 但我仍然从最后一个发送命令获得y,我无法在屏幕上回显。

有什么建议吗? 谢谢

1 个答案:

答案 0 :(得分:0)

stty -echo本身足以隐藏输出。但是,我不确定这有什么不对。

无论如何,试试这个。

"Do you accept the End User License Agreement?" {
    send "y\r"
    log_user 0
    expect *
}
log_user 1
send \r; # This is optional
interact