Как заставить ожидать ждать exec, пока результат не выводится - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть скрипт для ожидания значения в течение 60 секунд

getotp.sh
        for i in {1..60}; do
        OTP=$(curl http://somewhere/somefile)
        [ ! -z "$OTP" ] && echo $OTP && exit
        sleep 1
        done

И у меня есть сценарий ожидания вызова шеллскрипта для ввода значения OTP.

spawn -ignore HUP start_vpn 
set OTP [ exec getotp.sh ]
expect "Password:" { send \$OTP\r }
expect "Connected." { expect_background }

start_vpn isпредставляющий соединитель, который будет отправлять мне OTP, который я хотел бы получить (решить) и автоматически запрашивать вызываемый интерфейс.

Проблема здесь в том, что getotp.sh нужно будет ждать неопределенный период времени.времени (может быть, 10 ~ 60 секунд), пока письмо не будет получено и преобразовано в значение OTP.Но в моем ожидаемом сценарии строка никогда не ждет:

set OTP [ exec getotp.sh ]

Она никогда не ждет, и $ OTP всегда является нулевым значением, сразу же запрашиваемым для «Password:».

Как сделатьожидаете ли вы, что скрипт будет ожидать выполнения getotp.sh, пока не будет получено правильное значение?

...