У меня есть скрипт для ожидания значения в течение 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, пока не будет получено правильное значение?