пожалуйста, посоветуйте, что не так с моим синтаксисом exepct (я запускаю ожидание в сценарии ksh на машине Solaris 10)
Я хочу проверить, является ли ОС Linux
так что если это правда, ожидайте проверки, если подсказка "#" или ">"
а затем запустите команду "ls"
но я получаю сообщение об ошибке ниже, пожалуйста, посоветуйте, в чем может быть проблема
OS=solaris
expect_do_something=`cat << EOF
set timeout -1
spawn telnet 0 $IP_ADDRESS
expect login: {send $LOGIN\r}
expect Password: {send "$PASS\r"}
if { "$OS" == "solaris" }
{
expect -re {#|>} {send ls\r}
}
expect eof
EOF`
expect -c "$expect_do_something"
ошибка от ожидать:
wrong # args: no script following " "solaris" == "solaris" " argument
while executing
"if { "solaris" == "solaris" }"
Expect, являясь расширением Tcl, должен уважать Tcl очень мало синтаксических правил. В Tcl новая строка означает конец команды (см. это правило), так что вы должен поместите открытую скобку if-body на той же строке.
if { "$OS" == "solaris" } {
# ......................^
expect -re {#|>} {send ls\r}
}