この場合は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 件のコメント:
コメントを投稿