Expectコマンドで生成失敗を検出する方法

Expectコマンドで生成失敗を検出する方法

私は次のスクリプトを書いた。

#!/bin/sh

expect -c "
spawn cu -l /dev/ttyUSB0 -s 115200
expect \"foo\"
send \"bar\"
"

echo $?

なしで実行すると/dev/ttyUSB0

$ ls /dev/ttyUSB0
ls: cannot access '/dev/ttyUSB0': No such file or directory

$ ./test.sh
spawn cu -l /dev/ttyUSB0 -s 115200
cu: open (/dev/ttyUSB0): No such file or directory
cu: /dev/ttyUSB0: Line in use
send: spawn id exp4 not open
    while executing
"send "bar""
0

expect製品を返品する理由は何ですか0?欠陥
を検出する方法はspawn

答え1

あなたはテストすることができますfoo そして eof

#!/bin/sh

expect <<'END_EXPECT'
    spawn cu -l /dev/ttyUSB0 -s 115200
    expect {
        eof {
            puts stderr "Cannot open cu"
            exit 1
        }
        "foo"
    }
    send "bar"
END_EXPECT

echo $?

予想されるコードを含めるために引用した文字列を使用するよりも、ここにあるドキュメントを使用する方が簡単であることがわかりました。ここで引用された文書は、\$expect_variables脱出について心配する必要はないことを意味します。

関連情報