在期望脚本中转义连字符和引号

时间:2017-02-22 14:13:48

标签: linux expect

您好我正在使用expect来自动执行登录任务。 但如果密码以连字符开头,则脚本将失败 我怎么能逃脱

我有很多麻烦正确转义'或其他字符有没有办法我可以编码我的所有字符并发送预期编码字符串在发送前解码

这是我的剧本

#!/usr/bin/expect -f
spawn ssh -o "PubkeyAuthentication no" -l user 10.10.10.10
expect "password: "
send "-cpass\'ok\r"
expect "$ "

1 个答案:

答案 0 :(得分:2)

从手册页:

  

- 标志强制将下一个参数解释为字符串而不是标志。任何字符串都可以以“ - ”开头   实际上看起来不是        像一面旗帜。这提供了一种可靠的机制来指定变量字符串,而不会被意外的字符串绊倒   看起来像旗帜。 (所有        以“ - ”开头的字符串保留给将来的选项。)

这意味着您应该写下send类似的内容:

send -- "-cpass\'ok\r"

注意:尝试传递以连字符开头的任何字符串时都会遇到问题;这不起作用:send "-cpass",如果您的字符串有连字符,则需要使用--标志。