#!/bin/bash function badCode { echo "bad code executed" } function testCode { #pick some existing file echo "/etc/passwd" } function tfunc { local foo= foo="$(testCode)" || {echo "foo";} cat "$foo" || { badCode case $? in *) exit 1 esac } } echo "Finished."