У меня есть следующий сценарий Баша, который обертывание ожидать сценарий (в виде здесь документ):стандартный вывод поток перенаправлять в ожидает сценарии
#!/bin/bash
PASSWORD_MYSQL_ROOT=root
expect <<- DONE
set timeout -1
spawn mysqldump --all-databases --user=root --password --protocol=TCP --host=localhost --verbose > somebackupfile.sql
expect "*?asswor?:*"
send -- "$PASSWORD_MYSQL_ROOT\r"
expect eof
DONE
Когда я выполнить этот сценарий, я получаю следующий результат:
spawn mysqldump --all-databases --user=root --password --protocol=TCP --host=localhost --verbose > somebackupfile.sql
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help
send: spawn id exp4 not open
while executing
"send -- "root\r""
Так что-то не работает правильно.
После некоторых попыток и ошибок я обнаружил, что перенаправление потока stdout > somebackupfile.sql
является виновником - скрипт работает после удаления этого перенаправления.
Так что мне интересно: как использовать перенаправление потоков в сценариях ожидания?
Смотрите, если мой ответ на [другой подобный вопрос] (http://stackoverflow.com/questions/31236483/how-to-create-a-mysql- database-from-dump-file-in-expect-tcl-script/31236758). – pynexj