2016-08-26 4 views
1

Ich versuche, ein Bash-Skript zu tun, die in dieser Art erwarten:Funktion bash Erwarten

spawn etc 
expect "something" 
send -- "something " 
etc 

Aber ich würde

send -- function() 

Wie zu tun ist das möglich?

Danke

+0

Wollen Sie die Ausgabe einer 'bash' Funktion als Argument des' send' Befehls/Befehls verwenden? Ich weiß nicht 'Spaw',' send' und 'etc' Befehle ... Ist es eigentlich ein' expect' Skript anstelle eines 'bash' Skripts? – Jdamian

Antwort

2

bash und erwarten verschiedene Sprachen sind, und erwarten in seine Eltern nicht auf magische Weise erreichen einige Code zu greifen.

Wenn Sie jedoch Export die Funktion, können Sie (eventuell) sie verwenden:

bash: definieren die Funktion

$ function foo { echo bar; } 
$ foo 
bar 

scheitern, es zu exportieren, versuchen, es zu verwenden

$ expect 
expect1.1> foo 
invalid command name "foo" 
    while executing 
"foo" 
expect1.2> exec bash -c foo 
bash: foo: command not found 
    while executing 
"exec bash -c foo" 
expect1.3> exit 

Jetzt exportieren Sie die Funktion

$ export -f foo 
$ expect 
expect1.1> exec bash -c foo 
bar 

Jetzt können Sie dies tun:

send -- "[exec bash -c your_function]\r" 

Aber der Schlüssel ist: exportieren Sie die Funktion, während in der übergeordneten Shell.