Como o código if
que você postou parece bastante simples, o
O requisito para usar uma construção case
é um pouco estranho. Suponho que um
poderia recuperar as informações de tipo de arquivo que ls -l
fornece:
case "$(ls -ld -- "$1")" in
-*) echo 'Regular file' ;;
d*) echo 'Directory' ;;
*) echo 'other' ;;
esac