rm -f sem ; mkfifo sem acquire() { x='';while test -z "$x"; do read x; done; } release() { echo '1' } job() { n=$1; echo "Job $n acquired Semaphore">&2 ; sleep 2; echo "Job $n released Semaphore">&2 ; } ( acquire < sem ; job 1 ; release > sem ) & ( acquire < sem ; job 2 ; release > sem ) & ( acquire < sem ; job 3 ; release > sem ) & echo 'Initialize Jobs' >&2 ; echo '1' > sem