Убедитесь, что st_new.sh делает что-то в конце, что вы можете распознать (например, touch /tmp/st_new.tmp, когда вы сначала удаляете файл и всегда начинаете один экземпляр st_new.sh). Затем создайте петлю опроса. Сначала спите нормальное время, которое, по вашему мнению, нужно подождать, и подождите короткое время в каждом цикле. Это приведет к чему-то вроде
max_retry=20
retry=0
sleep 10 # Minimum time for st_new.sh to finish
while [ ${retry} -lt ${max_retry} ]; do
if [ -f /tmp/st_new.tmp ]; then
break # call results.sh outside loop
else
(( retry = retry + 1 ))
sleep 1
fi
done
if [ -f /tmp/st_new.tmp ]; then
source ../../results.sh
rm -f /tmp/st_new.tmp
else
echo Something wrong with st_new.sh
fi