2017-02-27 4 views
-1

Ich versuche, die Ausgabe eines Befehls und stellen Sie ihn in eine Variable und dann senden wie ein Text in eine Datei zu lesen:Lesen Sie die Ausgabe in einer erwarten Datei in Linux

expect "~]#" { send "readlink some/link\r" } 
set CCM_BUILD $expect_out(buffer) 
send_log "CCM: $CCM_BUILD" 

aber was ich in Meine Dateien sind:

can't read "expect_out(buffer)": no such variable 
    while executing 
"set CCM_BUILD $expect_out(buffer)" 
    (file "../common/get_build.exp" line 20)^M 

Ich versuchte verschiedene Dinge, nichts, was ich fand schien zu arbeiten. Was fehlt mir hier?

+0

@glennjackman nehmen bitte einen Blick auf das ich weiß, Sie sind ein Profi –

Antwort

0

Die Variable $expect_out(buffer) wird erst aktualisiert, wenn Sie expect anrufen. So versuchen, wie folgt aus:

expect "~]#" { send "readlink some/link\r" } 
expect "~]#" { set CCM_BUILD $expect_out(buffer) } 
+0

nein, es gibt mir diese [[1034h-bash-4.1 $ nicht „CCM_BUILD“ lesen können: keine solche Variable während der Ausführung "Send_log $ CCM_BUILD" (Datei "../common/get_build.exp" Zeile 26)^M –

+0

klingt wie Ihre _prompt_ Zeichenfolge enthält nicht wirklich '" ~] # "'. – pynexj

+0

das ist richtig! Vielen Dank. Problem gelöst –

Verwandte Themen