_try_cc() { local out="$1" shift local infile infile=$(mktemp --suffix .c) cat > "$infile" ccache hash_dir=false \ "${CC:-cc}" -o "$out" "$infile" "$@" code=$? rm "$infile" || : return $? } cash() { local out out=$(mktemp) _try_cc "$out" "$@" || { code=$? echo 'Error: compilation failed' >&2 rm "$out" || : return "$code" } echo "$out" }