2016-08-26 4 views
1

Я пытаюсь сделать Баш скрипт с ожидать в этом стиле:Ожидать функция Баш

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

Но я хотел бы сделать

send -- function() 

Как это возможно?

Спасибо

+0

Вы хотите использовать вывод функции 'bash' в качестве аргумента команды' send'/команды? Я не знаю команд 'spaw',' send' и 'etc' ... Действительно ли это сценарий' expect' вместо сценария 'bash'? – Jdamian

ответ

2

Баш и ожидать, что различные языки, и ожидать, что не может волшебным образом достичь в своих родителей, чтобы захватить некоторый код.

Однако, если вы экспорт функция, вы можете (в конечном счете) использовать:

Баш: определить функцию

$ function foo { echo bar; } 
$ foo 
bar 

не в состоянии экспортировать его, попробуйте использовать его

$ 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 

сейчас, экспорт функции

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

Теперь вы можете сделать это:

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

Но ключ: экспортировать функцию в родительской оболочке.