Хотите использовать двойную кавычку внутри двойной кавычки
#!/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 ответа
Используйте фигурные скобки вместо двойных кавычек для отправки, как показано ниже:
send {ACT-USER::ABCDEFG:123::"ABCD";}
Ошибка не связана с двойными кавычками; порожденный процесс завершается с ошибкой перед отправкой командной строки.
Ожидается, что tcl, поэтому механизмы цитирования tcl работают. Отправка строки с двойными кавычками может быть выполнена путем экранирования кавычек с обратной косой чертой или использования фигурных скобок:
send "message with \"double quotes\""
send {message with "double quotes"}
Не уверен, но мы можем использовать одинарные кавычки в нескольких командах, таких как (sed), чтобы преодолеть эту проблему и свободно использовать двойные кавычки внутри одинарных кавычек без ущерба для функциональности. выполнить это