Com bash:
{
(./slowprocess.sh >&3 3>&-; echo "$?") |
if TMOUT=3 read status; then
echo "Cool it completed with status $status, do stuff..."
else
echo "It didn't complete, do something else..."
fi
} 3>&1
Alternativamente, se você quiser usar timeout
(aqui assumindo o GNU timeout
):
timeout --foreground 3 sh -c './slowprocess.sh;:'
evitaria que slowprocess.sh
fosse eliminado (o ;:
é necessário para implementações sh
que otimizam executando o último comando no processo do shell).