#!/bin/bash checkworkers() { local \ taskid \ parent_required \ parent_task for key in ${!workers[@]} do if ! kill -0 ${workers[key]} 2>/dev/null then taskid=${workertasks[key]} (( ++ran )) (( active-- )) if destroyworker $key then finishedtasks+=($taskid) else failedtasks+=($taskid) (( ++failed )) fi parent_task=$( Select tasks requires \ <<<"id = $taskid" ) if (( parent_task )) then parent_required=$( Select tasks required_by \ <<<"id = $parent_task" ) Update tasks required_by $((--parent_required)) \ <<<"id = $parent_task" fi unset workertasks[key] fi done }