Вы можете сделать что-то вроде:
#!/bin/bash
output=
count=0
until [[ $output =~ successful ]]; do
output=$(somecommand 2>&1)
((count++))
sleep 300
done
printf '\n%s\n' "Command completed successfully after $count attempts."
Это проверит, содержит ли вывод успешное выполнение. Если вы хотите убедиться, что вывод точно «успешен», вы можете изменить =~
на ==
.
$(... )
— это замена команды , которая используется для установки параметра output
на... выход somecommand
.