2016-01-04 213 views
1
#!/opt/sfw/bin/expect -- 
spawn telnet -e ! [lindex $argv 0] 
expect "<" 
send "ACT-USER::ABCDEFG:123::\"ABCD\";" 

以上工作不给错误内由于双引号双引号内想用双引号双引号

错误:

spawn telnet -e ! 
Telnet escape character is '!'. 
invalid flags 
send: spawn id exp7 not open 
    while executing 
"send "ACT-USER::ABCDEFG:123::'\"ABCD\"';"" 
    (file "./get-amp-pms.sh" line 4) 

回答

2

使用大括号代替双引号对于发送,如下:

send {ACT-USER::ABCDEFG:123::"ABCD";} 
0

不确定但我们可以在像(sed)这样的几个命令中使用单引号来克服这个问题可以在单引号内自由使用双引号而不会妨碍功能。所以尝试使用单引号中包含的参数(例如:发送'参数')来执行它

0

该错误与双引号无关;生成的进程在发送命令字符串之前正在退出。

expect是tcl,所以tcl报价机制起作用。用双引号发送字符串可以通过用反斜线或使用大括号来引用:

send "message with \"double quotes\"" 
send {message with "double quotes"}