Bash expect脚本中的标准数据流重定向

Bash expect脚本中的标准数据流重定向,bash,redirect,expect,Bash,Redirect,Expect,我有以下bash脚本,它包装了一个expect脚本(在这里以文档形式): 所以有些事情不对劲 经过一些尝试和错误,我发现stdout流重定向>somebackupfile.sql是罪魁祸首——一旦删除此重定向,脚本就会工作 所以我想知道:如何在expect脚本中使用流重定向?未经测试,但这应该可以工作: expect <<- DONE set timeout -1 spawn mysqldump --all-databases --user=root --password -

我有以下bash脚本,它包装了一个expect脚本(在这里以文档形式):

所以有些事情不对劲

经过一些尝试和错误,我发现stdout流重定向
>somebackupfile.sql
是罪魁祸首——一旦删除此重定向,脚本就会工作


所以我想知道:如何在expect脚本中使用流重定向?

未经测试,但这应该可以工作:

expect <<- DONE
  set timeout -1
  spawn mysqldump --all-databases --user=root --password --protocol=TCP --host=localhost --verbose
  expect "*?asswor?:*"
  send -- "$PASSWORD_MYSQL_ROOT\r"
  log_file somebackupfile.sql
  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""
expect <<- DONE
  set timeout -1
  spawn mysqldump --all-databases --user=root --password --protocol=TCP --host=localhost --verbose
  expect "*?asswor?:*"
  send -- "$PASSWORD_MYSQL_ROOT\r"
  log_file somebackupfile.sql
  expect eof
DONE