fragen stichworte

Erwarten Sie Skript + Schreiben Sie "Wenn" in Erwarten-Skript

Bitte geben Sie an, was mit meiner Exepct-Syntax nicht in Ordnung ist (ich habe auf einem Solaris 10-Rechner ein ksh-Skript ausgeführt)

Ich möchte überprüfen, ob das Betriebssystem Linux

ist

Wenn dies zutrifft, prüft die Expect-Check-Eingabeaufforderung "#" oder ">"

und führen Sie dann den "ls" -Befehl

aus

aber ich bekomme den Fehler unten bitte beraten, was das Problem sein könnte

    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"

der Fehler von Expect:

 wrong # args: no script following " "solaris" == "solaris" " argument
     while executing
  "if { "solaris" == "solaris" }"

antworten

Erwarte, da es eine Erweiterung von Tcl ist, muss Tcl's sehr wenige Syntaxregeln respektieren. In Tcl bedeutet eine neue Zeile das Ende des Befehls (siehe diese Regel), also müssen Sie die offene Klammer des if-body in derselben Zeile platzieren.

if { "$OS" == "solaris" } {
  # ......................^
  expect -re {#|>} {send ls\\r}
}