在heredoc中使用expect命令

时间:2015-04-22 16:10:40

标签: bash expect

对于以下微小的期望脚本,其函数已添加到bash配置文件中:

chai() {
    expect <<- EOF
    spawn ssh myuser@myserver
    expect ': $'
    send 'mypassword\r'
    EOF
}

我们得到:

bash: /etc/profile: line 409: syntax error: unexpected end of file

该脚本有什么问题?

1 个答案:

答案 0 :(得分:2)

我通常希望heredoc终结符(EOF)位于该行的 start 。例如

chai() {
    expect <<- EOF
    spawn ssh myuser@myserver
    expect ': $'
    send 'mypassword\r'
EOF
}

我看到您正在使用<<-并使用链接的文档:

  

- 用于标记此处文档限制字符串的选项(&lt;&lt;&lt; -LimitString)   抑制输出中的前导标签(但不是空格)。这可能是   有助于使脚本更具可读性。

所以你应该检查一下脚本,看看你的命令前面是否有TAB。 EOF遵守相同的规则。

cat <<-ENDOFMESSAGE
    This is line 1 of the message.
    This is line 2 of the message.
    This is line 3 of the message.
    This is line 4 of the message.
    This is the last line of the message.
ENDOFMESSAGE
# The output of the script will be flush left.
# Leading tab in each line will not show.