この場合はwaitでプロセスの終了を待つと、結果が返ってくる。
結果はリストになっていて3番目(インデックス2)が-1の場合は
OSエラー、0の場合は4番目(インデックス3)にswawnしたプロセスの
終了ステータスが入っている。
スクリプトの例。読み取り権のないファイルをcatして終了ステータスを得る。
spawn cat /etc/shadow expect eof catch wait result set OS_ERROR [ lindex $result 2 ] if { $OS_ERROR == -1 } { puts "Fail to exec" exit 127 } set STATUS [ lindex $result 3 ] exit $STATUSスクリプト自体をcatの終了ステータスで終了する。
実行結果
$ expect test.expect spawn cat /etc/shadow cat: /etc/shadow: Permission denied $ echo $? 1きちんと1が返っている。
expectはTcl言語の文法を知らないとちょっと戸惑う。
man expectでもよくわからないと思うことは実はTcl言語の文法だったり。
0 件のコメント:
コメントを投稿