在期望脚本中逃避$

时间:2014-06-23 19:04:35

标签: bash shell ssh expect

#!/bin/bash
/usr/bin/expect << SSHLOGIN

spawn ssh -o StrictHostKeyChecking=no admin@$host

expect {
    Password: {
        send "Pass$word\n"
        expect {
            OK: {
                send "xstatus\n"
                send "quit\n"
            }
        }
    }
}
SSHLOGIN

它无法ssh,因为它没有逃避&#39; $&#39; &#34;传递$ word \ n&#34;因为$是密码的一部分,并且没有传递变量。你怎么逃避它?我知道在bash中,你会添加&#39; \&#39;,但由于密码在期望脚本部分,这不起作用。

编辑: 将Pass$word\n更改为Pass\\\$word\n有效

1 个答案:

答案 0 :(得分:2)

此处 - 文档是bash代码,因此您仍然使用\$

期望脚本是TCL,所以你也需要逃离$。通过两个级别的转义,您将获得:

send "Pass\\\$word\n"