私は走っていますzsh
。tmux
プレスト楽章、デフォルトの予想スクリプトが正しく終了しません。
set timeout -1
spawn $env(SHELL)
expect -regex ".*"
send "echo 'foo'\r"
expect -regex ".*foo.*\r"
send "^D"
expect eof
結果は期待どおりに出力され、スクリプトは終了します。ただし、キーボードをfoo
押すまで公開されたプロンプトは削除されます。CTRL-C
この時点で、aが%
印刷され、次の行が表示されます。
❯ ./modified-autoexpect-recording.exp
spawn /bin/zsh
echo 'foo'
❯ echo 'foo'
foo
~/ < ... fancy stuff ... ❯ ^C% # this was a manual CTRL-C event from a broken prompt
~/ < ... fancy stuff ... ❯ # this is working
直接自動的に予想される結果は同じ問題を引き起こします。私が注目したことの1つは次のとおりです。
~/long/path/here ❯ ^C%
~/lo/pa/here ❯ # after exiting the frozen prompt
エンドツーエンドのAutoExpectの例:
$: autoexpect
$: echo 'foo'
foo
$:[CTRL-D]
$: ./script.exp
$:[CTRL-C]%
$: # prompt works
次の修正後も動作は変わりません。
# changes at beginning
set log_user 0
set stty sane
# changes at end
send -- '^D' # -> send -- \x04
これは、短縮されるカスタムプロンプトへのパスに関連している必要があります。
プロンプトシステムを変更することを嬉しく思いますが、理想的にはいくつかのモードでのみ機能することを期待しています。
私はドンの本(O'Reilly)を見直しているので、おそらく答えがあるでしょう。その間、予想プログラムを正常に終了する方法はありますか?