Как проверить успех или неудачу команды, которая находится в пределах ожидаемого блока - PullRequest
0 голосов
/ 31 января 2019

У меня есть bash-код, который использует ожидаемое между прочтением чтение из терминала через spawn.Код выглядит примерно так:

expect <{cat <<'EOD'
spawn command_whose_success_or_failure_i_want_to_know
interact
EOD
)

Проблема состоит в том, чтобы найти успех или неудачу "command_whose_success_or_failure_i_want_to_know" в блоке ожидаемого.

Прямо сейчас, когда я делаю:

if [ $? -eq 0 ]; then
blah

Это на самом деле проверка ожидаемого успеха, а не внутренняя команда, которую я хочу проверить.Как я могу сделать это здесь?Спасибо

1 Ответ

0 голосов
/ 01 февраля 2019

Вы сделаете это (не проверено):

expect <<'END_EXPECT'
    # if your command takes > 10 seconds to complete, uncomment the next line:
    # set timeout $some_number_of_seconds_or_negative_one

    spawn command_whose_success_or_failure_i_want_to_know
    expect eof

    set result [wait]
    if {[lindex $result 2] == 0} {
        exit [lindex $result 3] ;# exit expect with the command's exit status
    } else {
        error "an operating system error occurred, errno=[lindex $result 3]"
    }
END_EXPECT
exit_status=$?

echo "the command exited with: $exit_status"
...