Linux expect脚本中的转义连字符和引号
您好,我正在使用expect自动执行登录任务。 但如果密码以连字符开头,脚本将失败 我怎么能逃脱呢 我很难正确地转义“.”或其他字符。是否有一种方法可以对我所有的字符进行编码并发送,但在发送之前需要对编码的字符串进行解码 这是我的剧本Linux expect脚本中的转义连字符和引号,linux,expect,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 "$ "
#!/usr/bin/expect -f
spawn ssh -o "PubkeyAuthentication no" -l user 10.10.10.10
expect "password: "
send "-cpass\'ok\r"
expect "$ "
您可以尝试将密码保存在变量中:
password=-cpass\'ok\r
send "$password"
您只需在每个'
、“
或空格前面写一个\
。从手册页:
--标志强制将下一个参数解释为字符串而不是标志。任何字符串前面都可以加“-”是否
或者它实际上看起来不是
就像一面旗帜。这提供了一种可靠的机制来指定变量字符串,而不会被那些意外触发的字符串绊倒
看起来像旗帜。(全部
以“-”开头的字符串保留给将来的选项。)
这意味着您应该编写send
之类的内容:
send -- "-cpass\'ok\r"
注意:尝试传递任何以连字符开头的字符串时都会遇到问题;这不起作用:
send“-cpass”
,如果字符串有连字符,则需要使用--
标志 您是否试图转义此处的单引号或空格?Tcl/Expect不支持var=value
语法。