想在双引号内使用双引号

时间:2016-01-04 07:42:49

标签: shell expect telnet ansi-escape

#!/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)

3 个答案:

答案 0 :(得分:2)

使用花括号而不是双引号进行发送,如下所示:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

期望是tcl,所以tcl引用机制起作用。发送带双引号的字符串可以通过使用反斜杠转义引号或使用大括号来完成:

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