Você pode return
de toda a função imediatamente quando encontrar uma correspondência. Dessa forma, você pode ter uma "parte final" após o loop, que só é executado se nenhuma correspondência for encontrada. Algo parecido com isto:
#!/usr/bin/env bash
# You might not care for this declaration of the array contents,
# but it does the same thing, and keeps my example nice and short
MATLAB_VERSION=( MATLAB{9.{4..0},8.{6,5,3,0},{7.5,}}.app )
# RC 0 = found
# RC 1 = not found
matlab_check() {
for MATLAB in "${MATLAB_VERSION[@]}"; do
if [ -d "/Applications/${MATLAB}" ]; then
echo "Found in ${MATLAB}"
return 0
fi
done
return 1
}
matlab_check
echo rc is $?
E se você não quisesse exibir detalhes de onde foi encontrado, a parte if..fi
poderia ser reduzida a apenas isso. Não é necessário usar return 0
porque neste ponto sabemos que $? deve ser 0, portanto, apenas return
sem argumentos.
[ -d "/Applications/${MATLAB}" ] && return