2016-01-04 248 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"}