Хотите использовать двойную кавычку внутри двойной кавычки

#!/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), чтобы преодолеть эту проблему и свободно использовать двойные кавычки внутри одинарных кавычек без ущерба для функциональности. выполнить это

Другие вопросы по тегам