2016-01-04 3 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), чтобы преодолеть эта проблема и свободно использовать двойную кавычку внутри одной кавычки, не мешая функциональности. Попробуйте использовать параметры, заключенные в одиночную кавычку (пример: send 'paramters'), чтобы выполнить ее.

0

Ошибка не связана с двойным кавычками; порожденный процесс завершает ошибку до отправки командной строки.

Ожидается tcl, поэтому tcl цитирует механизмы работы. Отправка строки с двойными кавычками может быть выполнена путем выхода из котировки с обратной косой чертой или с использованием скобок:

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